第14章 MongoDB 更新文档教程

第14章 MongoDB 更新文档教程

MongoDB 使用 update()save() 方法来更新集合中的文档。接下来让咱们详细来看下两个函数的应用及其区别。


update() 方法

update() 方法用于更新已存在的文档。语法格式如下:


    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
  • upsert : 非必输,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 非必输,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :非必输,抛出异常的级别。

实例

咱们在集合 col 中插入如下数据:


    >db.col.insert({
        title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql database',
        by: 'liulianjiangcsdn教程',
        url: 'http://blog.csdn.net/qq441540598',
        tags: ['mongodb', 'database', 'NoSQL'],
        likes: 100
    })

接着咱们通过 update() 方法来更新标题(title):


    >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 输出信息
    > db.col.find().pretty()
    {
            "_id" : ObjectId("56064f89ade2f21f36b03136"),
            "title" : "MongoDB",
            "description" : "MongoDB 是一个 Nosql database",
            "by" : "liulianjiangcsdn教程",
            "url" : "http://blog.csdn.net/qq441540598",
            "tags" : [
                    "mongodb",
                    "database",
                    "NoSQL"
            ],
            "likes" : 100
    }
    >

可以看到标题(title)由原来的 “MongoDB 教程” 更新为了 “MongoDB”。

以上语句只会修改第一条发现的文档,如果大神要修改多条相同的文档,则需要设置 multi 参数为 true。


    >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})


save() 方法

save() 方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入。语法格式如下:


    db.collection.save(
       <document>,
       {
         writeConcern: <document>
       }
    )

参数说明:

  • document : 文档数据。
  • writeConcern :非必输,抛出异常的级别。

实例

以下实例中咱们替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:


    >db.col.save({
        "_id" : ObjectId("56064f89ade2f21f36b03136"),
        "title" : "MongoDB",
        "description" : "MongoDB 是一个 Nosql database",
        "by" : "Runoob",
        "url" : "http://blog.csdn.net/qq441540598",
        "tags" : [
                "mongodb",
                "NoSQL"
        ],
        "likes" : 110
    })

替换成功后,咱们可以通过 find() 命令来查看替换后的数据


    >db.col.find().pretty()
    {
            "_id" : ObjectId("56064f89ade2f21f36b03136"),
            "title" : "MongoDB",
            "description" : "MongoDB 是一个 Nosql database",
            "by" : "Runoob",
            "url" : "http://blog.csdn.net/qq441540598",
            "tags" : [
                    "mongodb",
                    "NoSQL"
            ],
            "likes" : 110
    }
    >


更多实例

只更新第一条记录:

db.col.update( \{ "count" : \{ $gt : 1 \} \} , \{ $set : \{ "test2" : "OK"\} \} );

全部更新:

db.col.update( \{ "count" : \{ $gt : 3 \} \} , \{ $set : \{ "test2" : "OK"\} \},false,true );

只添加第一条:

db.col.update( \{ "count" : \{ $gt : 4 \} \} , \{ $set : \{ "test5" : "OK"\} \},true,false );

全部添加进去:

db.col.update( \{ "count" : \{ $gt : 5 \} \} , \{ $set : \{ "test5" : "OK"\} \},true,true );

全部更新:

db.col.update( \{ "count" : \{ $gt : 15 \} \} , \{ $inc : \{ "count" : 1\} \},false,true );

只更新第一条记录:

db.col.update( \{ "count" : \{ $gt : 10 \} \} , \{ $inc : \{ "count" : 1\} \},false,false );

本专栏所有文章

第1章 MongoDB 教程 第2章 NoSQL 简介教程
第3章 MongoDB 简介教程 第4章 Windows MongoDB教程
第5章 Linux MongoDB教程 第6章 OSX MongoDB教程
第7章 MongoDB 概念解析教程 第8章 MongoDB 连接教程
第9章 MongoDB 创建数据库教程 第10章 MongoDB 删除数据库教程
第11章 MongoDB 创建集合教程 第12章 MongoDB 删除集合教程
第13章 MongoDB 插入文档教程 第14章 第14章 MongoDB 更新文档教程教程
第15章 MongoDB 删除文档教程 第16章 MongoDB 查询文档教程
第17章 MongoDB 条件操作符教程 第18章 MongoDB $type 操作符教程
第19章 MongoDB Limit与Skip方法教程 第20章 MongoDB 排序教程
第21章 MongoDB 索引教程 第22章 MongoDB 聚合教程
第23章 MongoDB 复制(副本集)教程 第24章 MongoDB 分片教程
第25章 MongoDB 备份与恢复教程 第26章 MongoDB 监控教程
第27章 MongoDB Java教程 第28章 MongoDB PHP 扩展教程
第29章 MongoDB PHP教程 第30章 MongoDB PHP7教程
第31章 Node.js MongoDB教程 第32章 MongoDB 关系教程
第33章 MongoDB 数据库引用教程 第34章 MongoDB 覆盖索引查询教程
第35章 MongoDB 查询分析教程 第36章 MongoDB 原子操作教程
第37章 MongoDB 高级索引教程 第38章 MongoDB 索引限制教程
第39章 MongoDB ObjectId教程 第40章 MongoDB Map Reduce教程
第41章 MongoDB 全文检索教程 第42章 MongoDB 正则表达式教程
第43章 MongoDB 管理工具教程 第44章 MongoDB GridFS教程
第45章 MongoDB 固定集合教程 第46章 MongoDB 自动增长教程

寄语

本文有榴莲酱CSDN原创,欢迎点赞、转载,博客地址:https://blog.csdn.net/qq441540598

  • 温柔要有的,但不是妥协,我们要在安静中不慌不忙的坚强。
  • 不要以为你放不下的人同样会放不下你,鱼没有水会死,水没有鱼却会更清澈。
  • 同窗末年一梦中,烂漫随风皆成空。他日再见谁为伴,为梦执笔笑苍穹。
  • 信用就像一面镜子,只要有了裂缝就不能像原来那样连成一片。
  • 睁开明亮的双眼,除去睡意的干扰,舒展标致的笑容,拥抱快活的一天。早安,朋友,愿你今天好心情,生活工作都舒心。

你可能感兴趣的:(MongoDB,mongodb,数据库,nosql)