删除
MongoDB
有 3 种常用的删除方法,分别为remove()
、delete()
和deleteMany()
。
(1) 语法格式
db.collection.update(
<query > ,
{
justOne: < boolean > ,
writeConcern: < document > ,
collation: < document >
}
)
(2) 参数说明
-
writeConcern
: 此为可选参数。表示是否使用写入策略。 -
collation
:可选参数。用来指定更新的排序规则。 -
justOne
:可选参数。表示文档与删除条件匹配时,是否仅删除第 1 个文档。此参数默认为false
。若将此参数设置为true
,则仅删除匹配到的第 1 个文档;若将此参数设置为false
,则删除匹配到的所有文档。
(3) 范例
仅删除匹配到的第 1 个文档
删除前:
> db.Product.find({"SysNo": 9898998989})
{ "_id" : ObjectId("60da83996350a57504489e73"), "SysNo" : 9898998989, "ProductName" : "DE - 1300 Earbuds", "Weight" : 1000, "ProductMode" : "Set" }
{ "_id" : ObjectId("60da83996350a57504489e74"), "SysNo" : 9898998989, "ProductName" : "( Role Gold) 16GB", "Weight" : 143, "ProductMode" : "Set" }
{ "_id" : 1, "ProductNname" : "Rarbus", "SysNo" : 9898998989, "Weigth" : 122, "ProductMode" : "Set" }
{ "_id" : ObjectId("60da90d46350a57504489e75"), "ProductNname" : "Rarbus", "SysNo" : 9898998989, "Weigth" : 122, "ProductMode" : "Set" }
{ "_id" : 2, "ProductNname" : "Rarbus", "SysNo" : 9898998989, "Weigth" : 222, "ProductMode" : "Set" }
{ "_id" : ObjectId("60da91676350a57504489e76"), "ProductNname" : "Rarbus", "SysNo" : 9898998989, "Weigth" : 122, "ProductMode" : "Set" }
{ "_id" : ObjectId("60da91866350a57504489e77"), "ProductNname" : "Rarbus", "SysNo" : 9898998989, "Weigth" : 122, "ProductMode" : "Set" }
{ "_id" : ObjectId("60da99fd6350a57504489e78"), "Weigth" : 88888888, "ProductMode" : "Set", "SysNo" : 9898998989 }
删除:
> db.Product.remove({"SysNo": 9898998989},{justOne: true})
WriteResult({ "nRemoved" : 1 })
删除后:
> db.Product.find({"SysNo": 9898998989})
{ "_id" : ObjectId("60da83996350a57504489e74"), "SysNo" : 9898998989, "ProductName" : "( Role Gold) 16GB", "Weight" : 143, "ProductMode" : "Set" }
{ "_id" : 1, "ProductNname" : "Rarbus", "SysNo" : 9898998989, "Weigth" : 122, "ProductMode" : "Set" }
{ "_id" : ObjectId("60da90d46350a57504489e75"), "ProductNname" : "Rarbus", "SysNo" : 9898998989, "Weigth" : 122, "ProductMode" : "Set" }
{ "_id" : 2, "ProductNname" : "Rarbus", "SysNo" : 9898998989, "Weigth" : 222, "ProductMode" : "Set" }
{ "_id" : ObjectId("60da91676350a57504489e76"), "ProductNname" : "Rarbus", "SysNo" : 9898998989, "Weigth" : 122, "ProductMode" : "Set" }
{ "_id" : ObjectId("60da91866350a57504489e77"), "ProductNname" : "Rarbus", "SysNo" : 9898998989, "Weigth" : 122, "ProductMode" : "Set" }
{ "_id" : ObjectId("60da99fd6350a57504489e78"), "Weigth" : 88888888, "ProductMode" : "Set", "SysNo" : 9898998989 }
不加justOne
参数
> db.Product.remove({"SysNo": 9898998989})
WriteResult({ "nRemoved" : 7 })
> db.Product.find({"SysNo": 9898998989})
>
如果删除语句为db.Product.remove({})
,则删除全部的文档。
2. deleteOne()
deleteOne()
方法只能删除第 1 个文档,此方法与 remove()
方法中设定justOne
为true
一样。
范例
> db.Product.deleteOne({"_id" : ObjectId("60da99fd6350a57504489e78")})
{ "acknowledged" : true, "deletedCount" : 0 }
> db.Product.find({"_id" : ObjectId("60da99fd6350a57504489e78")})
>
3. deleteMany()
使用deleteMany()
方法可以一次删除多个文档。
范例
> db.Product.deleteMany({"Weigth" : 88888888666})
{ "acknowledged" : true, "deletedCount" : 1 }