MongoDB(8)- 文档删除操作

摘要:
删除方法db.collection。deleteOne()删除单个文档db.collection。deleteMany()删除多个文档db.collection。remove()删除一个或多个文档deleteOne()语法格式db.collection。deleteOne(<filter>,{writeConcern:<document>,集合:<doc

删除方法

db.collection.deleteOne()
删除单条文档
db.collection.deleteMany()
删除多条文档
db.collection.remove()
删除单条或多条文档

deleteOne() 语法格式

db.collection.deleteOne(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>,
      hint: <document|string>        // Available starting in MongoDB 4.4
   }
)
  • filter:删除文档的条件,有点像 Mysql 的 where 条件
  • hint:指定查询的索引

deleteMany() 语法格式

db.collection.deleteMany(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)

remove() 语法格式

语法一

db.collection.remove(
   <query>,
   <justOne>
)

语法二

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>,
     collation: <document>
   }
)

参数说明

  • query/filter:使用查询运算符指定删除条件,要删除集合中的所有文档,传递一个空文档 ({}) 就行
  • justOne:可选项,true,删除第一个满足删除条件的文档,默认 false,删除所有满足条件的文档
  • writeConcern:可选项,设置抛出异常的级别(比较复杂,用到再详解)
  • collation:指定用于操作的排序规则(比较复杂,用到再详解)

重点

删除文档是永久性删除,不能撤销也不能恢复

插入数据

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "P" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" },
] );

为了后面的栗子用的

删除所有文档

db.inventory.remove({}) 

MongoDB(8)- 文档删除操作第1张

db.inventory.deleteMany({}) 

MongoDB(8)- 文档删除操作第2张

如果是 deleteOne() 只传 {} 呢?

db.inventory.deleteOne({})

MongoDB(8)- 文档删除操作第3张

只删除集合中第一条文档 

删除指定条件的文档

db.inventory.deleteMany({ status : "A" })

MongoDB(8)- 文档删除操作第4张

等价写法 

db.inventory.remove({status:"A"})

如果是 deleteOne() 呢?

db.inventory.deleteOne({status:"A"})

MongoDB(8)- 文档删除操作第5张

status 为 “A” 的文档有两条,但只会删除匹配到的第一条

条件删除

删除 qty 字段值大于 50 的文档

db.inventory.remove( { qty: { $gt: 50 } } 

MongoDB(8)- 文档删除操作第6张

删除匹配 h 大于 8.5 的第一个文档

db.inventory.remove( { "size.h" : { $gt : 8.5 } } , { justOne : true } )

MongoDB(8)- 文档删除操作第7张

删除操作的重点

  • 删除文档不会删除索引
  • 所有操作在单个文档级别上都是原子性的

以下方法也可以从集合中删除文档

  • db.collection.findOneAndDelete()

  • db.collection.findAndModify()

  • db.collection.findAndModify()

  • db.collection.bulkWrite()

更多栗子后面用到再补充

免责声明:文章转载自《MongoDB(8)- 文档删除操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇获取Android设备唯一标识码java笔试题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MongoDB入门(4)- MongoDB日常操作

MongoDB客户端 MongoDB有很多客户端MongoVueRobomongo MongoDB命令行 启动mongo shell 在windows下,双击mongo.exe可以启动mongo shell 查询库、表及选择库 查询所有库命令: show dbs 应用某一个db use jxs_database 查询此db里面所有collection...

【Mongodb】用户和认证 权限总结

开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库!   在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息!当admin.system.users一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admi...

MongoDB GridFS 存储大文件

我们经常会遇到这样的场景:上传/下载文件。 有两种思路可以解决这个问题: (1)将文件存储在服务器的文件系统中; (2)将文件存储在数据库中。 如果我们选择(2),那么我们可以使用MongoDB GridFS 用于存储大小超过 16MB 的文件(文档,压缩文件,音视频,软件)。 一、MongoDB GridFS 介绍 MongoDB GridFS 是一个分...

Yapi数据迁移(docker版)

前言 最近腾讯99一年的特价服务器要到期了,搭建在服务器上的yapi还在使用。本想直接把项目的接口全部导出来,再导入到新的服务器上。但想了下,账号这些的还要他们重新去建,接口地址也要重新配置,本人一直比较赖,思来想去还是无缝迁移吧,大家都省事。 方案 A为老机器,B为新机器。 1.将A服务器(老服务器)上的docker中的MongoDB数据备份; 2.将备...

MongoDB基本介绍及一些用法

 满足海量存储需求和访问的面向文档的数据库:MongoDB,CouchDB   MongoDB  Nice, I like it very much.   面向文档的非关系数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能。MongoDB是用C++开发的,而CouchDB则是Erlang开发的:   1、MongoD...

C#对MongoDB进行查询

使用c#对MongoDB进行查询 //创建约束生成器 FilterDefinitionBuilder<BsonDocument> builderFilter = Builders<BsonDocument>.Filter; ProjectionDefinitionBuilder<BsonDocument> builder...