MongoDB remove()函数是用来移除集合中的数据。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。
remove() 方法的基本语法格式如下所示:
db.collection.remove( <query>, <justOne>)
如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
})参数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
writeConcern :(可选)抛出异常的级别。
实例:向users集合中插入4条文档,然后根据条件删除文档。
# 向users集合插入4条记录
db.users.insert({id:1, name:"张三"});
db.users.insert({id:2, name:"李四"});
db.users.insert({id:3, name:"王五"});
db.users.insert({id:4, name:"赵六"});下面将删除id=4的文档,如下:
# 先查看集合的文档列表
> db.users.find();
{ "_id" : ObjectId("5e4940d1cd56e9badcee4166"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e4940d1cd56e9badcee4167"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e4940d1cd56e9badcee4168"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e4940d1cd56e9badcee4169"), "id" : 4, "name" : "赵六" }
# 删除id=4的文档
> db.users.remove({"id":4});
WriteResult({ "nRemoved" : 1 })
# 再次查看集合文档,缺少了id=4的文档,已被删除
> db.users.find();
{ "_id" : ObjectId("5e4940d1cd56e9badcee4166"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e4940d1cd56e9badcee4167"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e4940d1cd56e9badcee4168"), "id" : 3, "name" : "王五" }如果你只想删除第一条找到的记录可以设置 justOne 为 true,如下所示:
# 先查看集合文档列表
> db.users.find();
{ "_id" : ObjectId("5e4940d1cd56e9badcee4166"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e4940d1cd56e9badcee4167"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e4940d1cd56e9badcee4168"), "id" : 3, "name" : "王五" }
# 删除id大于1的文档,设置justOne=true,删除匹配的第一条记录
> db.users.remove({id:{$gt:1}}, {justOne:true});
WriteResult({ "nRemoved" : 1 })
# 再次查看users集合文档,确认删除的文档(id=2的记录被删除了)
> db.users.find();
{ "_id" : ObjectId("5e4940d1cd56e9badcee4166"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e4940d1cd56e9badcee4168"), "id" : 3, "name" : "王五" }
>如果你想删除所有数据,方式如下:
# 查看集合中文档列表
> db.users.find();
{ "_id" : ObjectId("5e4940d1cd56e9badcee4166"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e4940d1cd56e9badcee4168"), "id" : 3, "name" : "王五" }
# 删除集合users中所有的文档
> db.users.remove({});
WriteResult({ "nRemoved" : 2 })注意:
remove() 方法已经过时了,现在官方推荐使用 deleteOne() 和 deleteMany() 方法。如下:
# 如删除集合下全部文档
db.inventory.deleteMany({})
# 删除 id 大于 1 的全部文档
db.inventory.deleteMany({ id: {$gt: 1}});
# 删除 id 等于 1 的第一个文档
db.inventory.deleteOne({ id: "1" });