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 } }
)