• MongoDB(五):更新文档、删除文档


    1. 更新文档

    MongoDB的uptade()和save()方法用于将集合中的文档更新。update()方法更新现有文档中的值,而save()方法是传递文档数据替换现有文档。从3.2版本开始,MongoDB提供以下更新集合文档的方法:

    db.collection.updateOne()向指定集合更新单个文档

    db.collection.updateMany()向指定集合更新多个文档

    1.1 update()方法

    update()方法更新现有文档中的值。

    语法:

    > db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)

    实例:

    mycol集合具有以下数据:

    > db.mycol.find({}, {'_id':1, 'title':1})
    { "_id" : 100, "title" : "MongoDB Overview" }
    { "_id" : 101, "title" : "MongoDB Guide" }
    { "_id" : 102, "title" : "NoSQL Database" }
    { "_id" : 104, "title" : "Python Quick Guide" }
    >

    将标题为“MongoDB Overview”的文档设置为“New Update MongoDB Overview”。

    > db.mycol.find({'title':'MongoDB Overview'},{'_id':1, 'title':1})
    { "_id" : 100, "title" : "MongoDB Overview" }
    > # 更新操作
    > db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New Update MongoDB Overview'}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > # 查询更新后的结果 -
    > db.mycol.find({'_id':100},{'_id':1, 'title':1})
    { "_id" : 100, "title" : "New Update MongoDB Overview" }
    >

    默认情况下,MongoDB只会更新一个文档。要更新多个文档,需要将参数’multi‘设置为true。

    >db.mycol.update({'title':'MongoDB Overview'},
       {$set:{'title':'New Update MongoDB Overview'}},{multi:true})

    1.2 Save()方法

    save方法使用传递的文档数据替换现有文档。

    语法:

    >db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

    实例:

    将_id为100的文档使用新的文档替换。

    db.mycol.save(
       {
          "_id" : 100, "title":"Update By Save()Method.", "by":"yiibai.com"
       }
    )
    
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    
    db.mycol.find({'_id':100}, {'_id':1, 'title':1})
    { "_id" : 100, "title" : "Update By Save()Method." }

    2. 删除文档

    MongoDB提供了三个删除文档的方法:remove()、deleteOne()、deleteMany()。

    2.1 remove()方法

    remove()是最早的删除方法,现在使用的人也不少。

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

    remove()方法接受两个参数。的一个是删除条件,第二个是标志:justOne。

    criteria:(可选)符合删除条件的集合将被删除。

    justOne:(可选)如果设置为true或1,则只删除一个文档。

    语法:

    >db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)

    mycol集合具有以下数据:

    > db.mycol.find({}, {'_id':1, 'title':1})
    { "_id" : 101, "title" : "MongoDB Guide" }
    { "_id" : 102, "title" : "NoSQL Database" }
    { "_id" : 104, "title" : "Python Quick Guide" }
    { "_id" : 100, "title" : "Update By Save()Method." }
    >

    删除_id为“100”的文档。

    > db.mycol.find({}, {'_id':1, 'title':1})
    { "_id" : 101, "title" : "MongoDB Guide" }
    { "_id" : 102, "title" : "NoSQL Database" }
    { "_id" : 104, "title" : "Python Quick Guide" }
    { "_id" : 100, "title" : "Update By Save()Method." }
    >
    > db.mycol.remove({'_id':100})
    WriteResult({ "nRemoved" : 1 })
    > db.mycol.find({}, {'_id':1, 'title':1})
    { "_id" : 101, "title" : "MongoDB Guide" }
    { "_id" : 102, "title" : "NoSQL Database" }
    { "_id" : 104, "title" : "Python Quick Guide" }
    >

    如果有多条记录,并且只想删除第一条记录,则在remove()方法中设置justOne参数。

    >db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

    如果要删除所有文档记录,可以在remove()方法中设置justOne参数。

    如果不指定删除条件,MongoDB 将删除集合中的所有文档。 这相当于SQL的truncate命令。

    >db.mycol.remove()
    >db.mycol.find()
    >

    2.2 daleteOne()方法和deleteMany()方法

    db.mycol.deleteMany({})  # 删除所有 document
    db.mycol.deleteMany({ _id : "1" })    # 删除所有 匹配到document
    db.mycol.deleteOne( { _id: "3" } )   # 只删除第一个匹配的 document

    remove()方法可以说是deleteOne()、deleteMany()的集合。remove()方法是有那个boolean值的justOne参数来分别是否只删除一个文档,也就是区分deleteOne()、deleteMany()。

  • 相关阅读:
    dotnet core gbk 编码错误解决方案
    测试工程师有福啦!一键生成api文档及测试功能
    Asp.net MVC + AngularJS 统一权限管理系统(一)
    移动开发在路上-- IOS移动开发 五 网络请求封装
    移动开发在路上-- IOS移动开发系列 网络交互四(2)
    移动开发在路上-- IOS移动开发系列 网络交互四(1)
    GZIP怎么运用在.NET MVC 简单实现
    顺时针打印矩阵
    numpy教程 pandas教程 Python数据科学计算简介(莫烦 视频链接+代码笔记)
    4. Median of Two Sorted Arrays
  • 原文地址:https://www.cnblogs.com/liuhui0308/p/12067525.html
Copyright © 2020-2023  润新知