MongoDB 查询和写入操作命令

MongoDB 查询和写入操作命令

MongoDB插入命令

它在集合中插入一个或多个文档,并返回一个包含所有输入状态的文档。插入方法在内部使用MongoDB提供的插入命令。

语法:

{
   insert: <collection>,
   documents: [ <document>, <document>, <document>, ... ],
   ordered: <boolean>,
   writeConcern: { <write concern> },
   bypassDocumentValidation: <boolean>
}

参数字段

字段 类型 描述
insert string 这是我们要插入元素的集合名称。
documents array 这是我们要插入到集合中的文件数组。
ordered boolean 如果设置为 true,则在插入操作失败时,返回结果而不插入插入数组中列出的任何剩余文档,反之亦然。
writeConcern document 这是定义插入命令的写关注的一个文档。
bypass Document Validation boolean 我们可以使用此字段插入不符合验证要求的文档。

示例:

让我们将一个文档插入到图书集合中:

db.runCommand(
   {
      insert: "books",
      documents: [ { _id: 1, bookname: "MongoDB", status: "sold" } ]
   }
)

MongoDB删除命令

我们可以使用删除命令从集合中删除任何文档。在单个删除命令中有多个删除规范。我们不能在固定集合上使用它。删除命令是由MongoDB提供的删除方法在内部使用的。

语法:

{
   delete: <collection>,
   deletes: [
      { q : <query>, limit : <integer>, collation: <document> },
      { q : <query>, limit : <integer>, collation: <document> },
      { q : <query>, limit : <integer>, collation: <document> },
      ...
   ],
   ordered: <boolean>,
   writeConcern: { <write concern> }
}

参数字段

字段 类型 描述
delete string 它是我们要删除元素的目标集合的名称.
deletes array 它是一个由delete语句组成的数组,我们要在其中执行delete操作.
ordered boolean 如果设置为true,那么当插入操作失败时,它将返回结果,而不会插入insert数组中列出的任何剩余文档,反之亦然
writeConcern document 它是一个定义了delete命令的写关注点的文档.
q document 它是匹配要删除的查询.
limit integer 我们可以使用这个字段限制匹配的文档为delete。指定0表示删除所有匹配的文档,反之亦然.
collation document 它是一个可选字段,用于定义操作使用的排序规则.

示例:

下面的示例通过指定限制为2,删除了书籍集合中状态等于A的文档。

db.runCommand(
   {
      delete: "books",
      deletes: [ { q: { status: "A" }, limit: 1 } ]
   }
)

MongoDB 更新命令

更新命令对集合中的文档进行更改。它包含多个更新语句。它由 MongoDB 驱动程序提供的更新方法使用。

语法:

db.runCommand(
   {
      update: <collection>,
      updates: [
         {
           q: <query>,
           u: <document or pipeline>,      // Changed in MongoDB 4.2,
           upsert: <boolean>,
           multi: <boolean>,
           collation: <document>,
           arrayFilters: <array>,
           hint: <document|string>        // Available starting in MongoDB 4.2
         },
         ...
      ],
      ordered: <boolean>,
      writeConcern: { <write concern> },
      bypassDocumentValidation: <boolean>
   }
)

命令字段:

字段 类型 描述
update string 它是我们要更新数组的目标集合的名称.
updates array 它是对给定集合执行更新操作的update语句数组.
ordered boolean 如果设置为true,它就是一个可选字段。它将返回结果而不执行剩余的更新操作,反之亦然.
writeConcern document 它是一个文档,表达update命令的写关注。它描述了MongoDB对独立MongoDB的写操作请求的确认级别.
bypass Document Validation boolean 它使更新操作可以绕过文档验证
q document 它是与我们想要更新的文档匹配的查询.
u document 它是存储更新操作符表达式的文档.
upsert boolean 如果该字段设置为true,那么如果没有文档与查询匹配,则执行插入操作.
multi boolean 这个字段被设置为true;它将更新所有满足查询条件的文档
collation document 它指定了特定于语言的字符串比较规则
arrayfilters array 它是一个文档数组,描述了我们想要修改的数组元素.
hint string/ document 它是一个文档,指定用于支持查询谓词的索引.

示例:

让我们创建一个学生集合

Db.students.insertMany([
   { _id: 1, student: "john", status: "Pending", points: 0, misc1: "note to self: confirm status", misc2: "Need to activate" },
   { _id: 2, student: "Michael", status: "D", points: 59, misc1: "reminder: ping me at 100pts", misc2: "Some random comment" },
])

运行命令使用 set 和inc操作符来更新成员等于“john”的文档的状态。

db.runCommand(
   {
      update: "students",
      updates: [
         {
           q: { student: "john" }, u: { set: { status: "A" },inc: { points: 1 } }
         }
      ],
      ordered: false,
      writeConcern: { w: "majority", wtimeout: 5000 }
   }
)

MongoDB查询命令

find命令用于执行查询,并返回结果的第一组和光标的id,我们可以通过该光标构建一个光标。

语法:

db.runCommand(

   {
      "find": <string>,
      "filter": <document>,
      "sort": <document>,
      "projection": <document>,
      "hint": <document or string>,
      "skip": <int>,
      "limit": <int>,
      "batchSize": <int>,
      "singleBatch": <bool>,
      "comment": <string>,
      "maxTimeMS": <int>,
      "readConcern": <document>,
      "max": <document>,
      "min": <document>,
      "returnKey": <bool>,
      "showRecordId": <bool>,
      "tailable": <bool>,
      "oplogReplay": <bool>,
      "noCursorTimeout": <bool>,
      "awaitData": <bool>,
      "allowPartialResults": <bool>,
      "collation": <document>
   }
)

命令字段:

字段 类型 描述
find string 在此字段中,我们可以定义集合的名称。
filter document 它用于过滤查询。
sort document 它是一个包含查询排序详细信息的文档。
projection document 它是一个包含投影规范的文档,用于确定返回的文档中包含哪些字段。
hint string 它是一个指定索引名称或索引键模式的文档。
skip 正整数 此字段包含要跳过的文档数量。
limit 非负整数 我们可以设置要返回的最大文档数。
batchSize 非负整数 它包含我们希望在第一批中返回的文档数量。
singleBatch boolean 它包含是否在第一批结果之后关闭游标的详细信息。
maxTimeMS 正整数 我们可以为游标上的处理操作设置时间限制。
readConcern document 它指定了读取关注级别。
max document 它包含了给定索引的上限。
min boolean 它包含了给定索引的下限。
returnKey boolean 如果为真,则只返回结果文档中的索引键。
showRecordID boolean 用于返回每个文档的记录标识符。
tailable boolean 为受限制的集合返回一个可追溯的游标。
awaitData boolean 用于临时阻塞游标上的getMore命令。
oplogReplay boolean 用于重放副本集的oplog的命令。
noCursorTimeout boolean 防止服务器超时空闲游标。
allowPartialResults boolean 如果某些分片不可用,防止抛出错误的字段。
collation document 指定操作的排序规则

示例:

在下面的示例中,该命令按名称字段对结果集中的文档进行排序,并限制结果集为六个文档。

db.runCommand(
   {
     find: "restaurants",
     filter: { rating: { $gte: 9 }, cuisine: "American" },
     projection: { name: 1, rating: 1, address: 1 },
     sort: { name: 1 },
     limit: 6
   }
)

MongoDB查找并修改命令

它一次修改并返回一个文档。默认情况下,返回的文档不包括更新所做的修改。我们需要使用new选项来返回修改后的文档。

语法:

{
  findAndModify: <collection-name>,
  query: <document>,
  sort: <document>,
  remove: <boolean>,
  update: <document or aggregation pipeline>, // Changed in MongoDB 4.2
  new: <boolean>,
  fields: <document>,
  upsert: <boolean>,
  bypassDocumentValidation: <boolean>,
  writeConcern: <document>,
  collation: <document>,
  arrayFilters: <array>
}

命令字段

字段 类型 描述
query document query字段包含的查询选择器与db.collection.find()方法中使用的相同.
sort document 它定义了文档的排序顺序.
remove boolean 该字段删除在query字段中指定的文档.
update document/ array 它将更新指定的文档.
new boolean 如果设置为true,它将返回修改后的文档,而不是原始文档.
fields document 它是要返回的字段的子集。它指定包含值为1的字段。字段:{<field1>: 1, <field2>: 1,…}
upsert boolean 它与更新的字段一起使用。如果为真,则创建一个新文档并更新与查询匹配的单个文档。这个字段的默认值是false.
bypass Document Validation boolean 它使findmodify在处理过程中绕过文档验证
writeConcern document 它是一个文档,表达了对命令的写关注
maxTimeMS integer 它声明了操作的时间限制.
FindAndModify String 这个字段包含我们要针对它运行命令的集合.
collation collation 字段允许用户指定字符串比较的语言特定规则。
arrayFilters array 这是一个过滤文档数组,用于确定更新操作中将修改哪些数组元素。

示例:

               db.runCommand(
   {
     findAndModify: "book",
     query: { name: "MongoDB" },
     sort: { rating: 4 },
     update: { $inc: { price: 1 } },
     upsert: true
   }
 )

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程