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