db.collection.deleteMany()

在本页面

Definition

db.collection.deleteMany(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)
Parameter Type Description
filter document 使用query operators指定删除条件。


要删除集合中的所有文档,请传入一个空文档({ })。
| writeConcern |文档|可选。表示write concern的文档。忽略使用默认的写关注。
| collation |文档|可选。
指定用于操作的collation
Collation允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。
排序规则选项具有以下语法:
collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}
指定排序规则时,locale字段为必填字段;所有其他排序规则字段都是可选的。有关字段的说明,请参见Collation Document
如果未指定排序规则,但是集合具有默认排序规则(请参见db.createCollection()),则该操作将使用为集合指定的排序规则。
如果没有为集合或操作指定排序规则,则 MongoDB 使用先前版本中使用的简单二进制比较进行字符串比较。
您不能为一个操作指定多个排序规则。例如,您不能为每个字段指定不同的排序规则,或者如果对排序执行查找,则不能对查找使用一种排序规则,而对排序使用另一种排序规则。
3.4 版中的新功能。

|返回:|包含以下内容的文档:

Note





如果操作以write concernfalse运行,则布尔acknowledgedtrue,如果禁用了写关注



deletedCount包含已删除文档的数量|
|----|----|

Behavior

Capped Collections

deleteMany()如果在capped collection上使用,则会引发WriteError异常。要从上限集合中删除所有文档,请改用db.collection.drop()

删除单个文档

要删除单个文档,请改用db.collection.deleteOne()

或者,使用作为unique index一部分的字段,例如_id

Examples

删除多个文档

orders集合包含具有以下结构的文档:

{
   _id: ObjectId("563237a41a4d68582c2509da"),
   stock: "Brent Crude Futures",
   qty: 250,
   type: "buy-limit",
   limit: 48.90,
   creationts: ISODate("2015-11-01T12:30:15Z"),
   expiryts: ISODate("2015-11-01T12:35:15Z"),
   client: "Crude Traders Inc."
}

以下操作删除client : "Crude Traders Inc."处的所有文档:

try {
   db.orders.deleteMany( { "client" : "Crude Traders Inc." } );
} catch (e) {
   print (e);
}

该操作返回:

{ "acknowledged" : true, "deletedCount" : 10 }

以下操作删除stock : "Brent Crude Futures"limit大于48.88的所有文档:

try {
   db.orders.deleteMany( { "stock" : "Brent Crude Futures", "limit" : { $gt : 48.88 } } );
} catch (e) {
   print (e);
}

该操作返回:

{ "acknowledged" : true, "deletedCount" : 8 }

具有写入问题的 deleteMany()

给定一个三成员副本集,以下操作指定wmajoritywtimeout100

try {
   db.orders.deleteMany(
       { "client" : "Crude Traders Inc." },
       { w : "majority", wtimeout : 100 }
   );
} catch (e) {
   print (e);
}

如果确认花费的时间超过wtimeout限制,则会引发以下异常:

WriteConcernError({
   "code" : 64,
   "errInfo" : {
      "wtimeout" : true
   },
   "errmsg" : "waiting for replication timed out"
})

Specify Collation

3.4 版的新功能。

Collation允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。

集合myColl具有以下文档:

{ _id: 1, category: "café", status: "A" }
{ _id: 2, category: "cafe", status: "a" }
{ _id: 3, category: "cafE", status: "a" }

以下操作包括collation选项:

db.myColl.deleteMany(
   { category: "cafe", status: "A" },
   { collation: { locale: "fr", strength: 1 } }
)
首页