MongoDB8- 文档删除操作

删除方法

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

deleteOne() 语法格式

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

 

deleteMany() 语法格式

db.collection.deleteMany(
   
   }
)

 

remove() 语法格式

语法一

db.collection.remove(
   <query<justOne
)

 

语法二

<boolean
   }
)

 

参数说明

  • 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,status: "D" },{ item: "planner",qty: 75,size: { h: 22.85,w: 30,{ item: "postcard",qty: 45,size: { h: 10,w: 15.25,] );

为了后面的栗子用的

 

删除所有文档

db.inventory.remove({}) 

 

db.inventory.deleteMany({}) 

 

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

db.inventory.deleteOne({})

只删除集合中第一条文档 

 

删除指定条件的文档

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

 

等价写法 

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

 

如果是 deleteOne() 呢?

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

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

 

条件删除

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

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

 

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

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

 

删除操作的重点

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

 

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

  • db.collection.findOneAndDelete()

  • db.collection.findAndModify()

  • db.collection.findAndModify()

  • db.collection.bulkWrite()

 

更多栗子后面用到再补充

相关文章

文章浏览阅读552次。com.mongodb.MongoQueryException: Quer...
文章浏览阅读635次,点赞9次,收藏8次。MongoDB 是一种 NoSQ...
文章浏览阅读2.1k次。和。_mongodb 日期类型
文章浏览阅读1.7k次。Scalestack等客户期待使用MongoDB Atla...
文章浏览阅读970次。SpringBoot整合中间件mongodb、ES_sprin...
文章浏览阅读673次。MongoDB 简介_尚医通sql