加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 系统 > 正文

在MongoDB中用update()和 save()更新文档不同在哪

发布时间:2023-09-12 14:34:38 所属栏目:系统 来源:
导读:很多朋友都对“MongoDB中用update()和 save()更新文档不同在哪”的内容比较感兴趣,对此小编整理了相关的知识分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获,那么感兴趣的朋友就继续往下看吧
很多朋友都对“MongoDB中用update()和 save()更新文档不同在哪”的内容比较感兴趣,对此小编整理了相关的知识分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获,那么感兴趣的朋友就继续往下看吧!
 
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 数据库',
 
    by: '菜鸟教程',
 
    url: 'http://www.runoob.com',
 
    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 数据库",
 
        "by" : "菜鸟教程",
 
        "url" : "http://www.runoob.com",
 
        "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 数据库",
 
    "by" : "Runoob",
 
    "url" : "http://www.runoob.com",
 
    "tags" : [
 
            "mongodb",
 
            "NoSQL"
 
    ],
 
    "likes" : 110
 
})
 
替换成功后,我们可以通过 find() 命令来查看替换后的数据
 
>db.col.find().pretty()
 
{
 
        "_id" : ObjectId("56064f89ade2f21f36b03136"),
 
        "title" : "MongoDB",
 
        "description" : "MongoDB 是一个 Nosql 数据库",
 
        "by" : "Runoob",
 
        "url" : "http://www.runoob.com",
 
        "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 );
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章