On this page
db.collection.deleteMany()
在本页面
Definition
- db.collection.- deleteMany( )- 从集合中删除所有与filter匹配的文档。
 
- 从集合中删除所有与
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 concern或false运行,则布尔acknowledged为true,如果禁用了写关注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()
给定一个三成员副本集,以下操作指定w的majority和wtimeout的100:
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 } }
)