zoukankan      html  css  js  c++  java
  • MongoDB(8)- 文档删除操作

    删除方法

    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({}) 

    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()

    更多栗子后面用到再补充

  • 相关阅读:
    (33)ElasticSearch文档的核心元数据解析
    (32)ElasticSearch的容错机制
    (31)ElasticSearch水平扩容的过程
    (30)ElasticSearch两个节点环境中创建index解析
    (29)ElasticSearch分片和副本机制以及单节点环境中创建index解析
    UVA
    HDU
    ZOJ
    BZOJ1499: 瑰丽华尔兹(单调队列)
    UVALive
  • 原文地址:https://www.cnblogs.com/poloyy/p/14747947.html
Copyright © 2011-2022 走看看