• MongoDB 删除文档


    MongoDB remove()函数是用来移除集合中的数据。

    MongoDB数据更新可以使用update()函数。在执行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 :(可选)抛出异常的级别。

    实例

    以下文档我们执行两次插入操作:

    >db.col.insert({title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql 数据库',
        by: 'haha',
        url: 'http://www.baidu.com',
        tags: ['mongodb', 'database', 'NoSQL'],
        likes: 100
    })
    

    使用 find() 函数查询数据:

    > db.col.find()
    { "_id" : ObjectId("56066169ade2f21f36b03137"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "haha", "url" : "http://www.baidu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
    { "_id" : ObjectId("5606616dade2f21f36b03138"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "haha", "url" : "http://www.baidu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
    

    接下来我们移除 title 为 'MongoDB 教程' 的文档:

    >db.col.remove({'title':'MongoDB 教程'})
    WriteResult({ "nRemoved" : 2 })           # 删除了两条数据
    >db.col.remove({'title':'MongoDB 教程'},{justOne:true}) # 删除找到的第一条数据
    >db.col.find()
    ……                                        # 没有数据
    

    如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:

    >db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
    

    如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):

    >db.col.remove({})
    >db.col.find()
    >
    

    remove() 方法 并不会真正释放空间。

    需要继续执行 db.repairDatabase() 来回收磁盘空间。

    > db.repairDatabase()
    或者
    > db.runCommand({ repairDatabase: 1 })
    

    remove() 方法已经过时了,现在官方推荐使用 deleteOne() 和 deleteMany() 方法。

    如删除集合下全部文档:

    db.inventory.deleteMany({})
    

    删除 status 等于 A 的全部文档:

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

    删除 status 等于 D 的一个文档:

    db.inventory.deleteOne( { status: "D" } )
    
  • 相关阅读:
    碎碎念六三
    Go 面向对象简明教程
    软件工程中的耦合与解耦方式
    让工作事半功倍的常用思考框架及关于方法论的思考
    搞定加壳恶意进程检测流程!理解和构建复杂业务流程的基本方法
    程序员工作中的理性与感性活动及所需的技能素养
    碎碎念六二
    使用 Sigil 制作一本关于写出好代码的epub电子书
    计算机编程领域的三十六种基本思想概览
    我的价值观与人生目标
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13948354.html
Copyright © 2020-2023  润新知