db.collection.deleteOne()

在本页面

Definition

db.collection.deleteOne(
   <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 版中的新功能。

返回: 包含以下内容的文档:
如果操作以write concernfalse运行,则布尔acknowledgedtrue,如果禁用了写关注
deletedCount包含已删除文档的数量

Behavior

Deletion Order

deleteOne删除与过滤器匹配的第一个文档。使用属于unique index(例如_id)的字段进行精确删除。

Capped Collections

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

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."
}

以下操作将删除带有_id: ObjectId("563237a41a4d68582c2509da")的订单:

try {
   db.orders.deleteOne( { "_id" : ObjectId("563237a41a4d68582c2509da") } );
} catch (e) {
   print(e);
}

该操作返回:

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

以下操作删除expiryts大于ISODate("2015-11-01T12:40:15Z")的第一个文档

try {
   db.orders.deleteOne( { "expiryts" : { $lt: ISODate("2015-11-01T12:40:15Z") } } );
} catch (e) {
   print(e);
}

该操作返回:

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

具有写入问题的 deleteOne()

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

try {
   db.orders.deleteOne(
       { "_id" : ObjectId("563237a41a4d68582c2509da") },
       { 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.deleteOne(
   { category: "cafe", status: "A" },
   { collation: { locale: "fr", strength: 1 } }
)

See also

要删除多个文档,请参阅db.collection.deleteMany()

首页