MongoDB删除文档

本文将介绍MongoDB中怎样删除文档,或根据条件删除文档。

MongoDB remove()函数是用来移除集合中的数据。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。

remvoe()

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" });
如果在胜利前却步,往往只会拥抱失败;如果在困难时坚持,常常会获得新的成功。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号