MongoDB基本操作-删除文档
Posted Buddy Yuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB基本操作-删除文档相关的知识,希望对你有一定的参考价值。
删除文档的操作主要有下列几种方法:
db.collection.remove(),db.collection.deleteOne(),db.collection.deleteMany()三种方法。删除文档的操作并不会删除索引。就算你删除整个文档都不会删除索引。
db.users.insertMany([
{_id: 1,name: "sue",age:19,type: 1,status: "P",favorites: { artist: "Picasso",food: "pizza" },finished: [ 17, 3 ],
badges: [ "blue","black" ],points: [{ points: 85, bonus: 20 },{ points: 85, bonus: 10}]},
{_id: 2,name: "bob",age:42,type: 1,status: "A",favorites: { artist: "Miro", food:"meringue" },finished: [ 11, 25 ],
badges: [ "green"],points: [{ points: 85, bonus: 20 },{ points: 64, bonus: 12 }]},
{_id: 3,name: "ahn",age:22,type: 2,status: "A",favorites: { artist: "Cassatt",food: "cake" },finished: [ 6 ],
badges: [ "blue","red" ],points: [{ points: 81, bonus: 8 },{ points: 55, bonus: 20}]},
{_id: 4,name: "xi",age:34,type: 2,status: "D",favorites: { artist: "Chagall",food: "chocolate" },finished: [ 5, 11 ],
badges: [ "red","black" ],points: [{ points: 53, bonus: 15 },{ points: 51, bonus: 15}]},
{_id: 5,name: "xyz",age:23,type: 2,status: "D",favorites: { artist: "Noguchi",food: "nougat" },finished: [ 14, 6 ],
badges: [ "orange"],points: [{ points: 71, bonus: 20 }]},
{_id: 6,name: "abc",age:43,type: 1,status: "A",favorites: { food: "pizza", artist:"Picasso" },finished: [ 18, 12 ],
badges: [ "black","blue" ],points: [{ points: 78, bonus: 8 },{ points: 57, bonus: 7}]}])
首先插入6条记录。如果要删除全部记录,可以使用db.collection.deleteMany()方法,执行成功之后会返回状态,和删除文档的数目。
> db.users.deleteMany({});
{ "acknowledged" : true,"deletedCount" : 6 }
使用db.collection.remove({})方法也可以删除全部的文档。
> db.users.remove({});
WriteResult({ "nRemoved": 6 })
不过最有效的删除全部文档数据的方法还是db.users.drop(),它能删除整个集合中的文档,因为一旦数据量大了,删除就会比较慢,这就和关系型数据库一样,他需要一直遍历每一行所在的块,然后进行删除。同时删除集合还能删除掉集合中创建的索引。然后重建集合和重建索引,就完成了全部文档的删除。
当然,我们最多使用的场景是删除一些符合查询条件的文档,例如删除集合中status为"A"的文档。也是使用db.collection.deleteMany()和db.users.remove()方法。如下所示:
>db.users.deleteMany({status:"A"});
{ "acknowledged" : true,"deletedCount" : 3 }
>db.users.remove({status:"P"});
WriteResult({ "nRemoved": 1 })
执行成功后会返回状态和删除文档的数目。
如果你只想要删除一个文档的话,就可以使用db.collection.deleteOne()方法。同样的也可以使用db.users.remove(),但是需要在后面加入参数1,表示只删除1行。如果这些里面有很多文档匹配,它只会删除第一个文档。
>db.users.deleteOne({status:"A"});
{ "acknowledged" : true,"deletedCount" : 1 }
>db.users.remove({status:"A"},1);
WriteResult({ "nRemoved": 1 })
我们在删除文档之前,最好先用find()命令查询来判断一下执行条件下的数据是不是我们想要删除的,避免删错数据。
以上是关于MongoDB基本操作-删除文档的主要内容,如果未能解决你的问题,请参考以下文章