这篇文章主要介绍mongodb更新数据的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Mongodb更新有两个命令:update、save。

1.1update命令

update命令格式:

db.collection.update(criteria,objNew,upsert,multi)

参数说明:

criteria:查询条件。

objNew:update对象和一些更新操作符。

upsert:如果不存在update的记录,是否插入objNew这个新的文档,true为插入,默认为false,不插入。

multi:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。

示例:

>db.classes.insert({"name":"c1","count":30})>db.classes.insert({"name":"c2","count":30})>db.classes.find(){"_id":ObjectId("5030f3a3721e16c4ab180cd9"),"name":"c1","count":30}{"_id":ObjectId("5030f3ab721e16c4ab180cda"),"name":"c2","count":30}>

示例1:把count大于20的class name修改为c3

>db.classes.update({"count":{$gt:20}},{$set:{"name":"c3"}})>db.classes.find(){"_id":ObjectId("5030f3a3721e16c4ab180cd9"),"name":"c3","count":30}{"_id":ObjectId("5030f3ab721e16c4ab180cda"),"name":"c2","count":30}>

由于没有指定upsert和multi的值,所以全部默认为false,由结果可以看出,只修改了第一条符合条件的记录。

示例2:把count大于20的class name修改为c4,设置multi为true

>db.classes.update({"count":{$gt:20}},{$set:{"name":"c4"}},false,true)>db.classes.find(){"_id":ObjectId("5030f3a3721e16c4ab180cd9"),"name":"c4","count":30}{"_id":ObjectId("5030f3ab721e16c4ab180cda"),"name":"c4","count":30}>

由于指定了multi为true,所以对两条符合条件的记录都进行了更新。

示例3: 把count大于50的class name修改为c5,设置upsert为true

>db.classes.update({"count":{$gt:50}},{$set:{"name":"c5"}},true,false)>db.classes.find(){"_id":ObjectId("5030f3a3721e16c4ab180cd9"),"name":"c4","count":30}{"_id":ObjectId("5030f3ab721e16c4ab180cda"),"name":"c4","count":30}{"_id":ObjectId("5030f589ce8fa8884e6cd441"),"name":"c5"}>

在集合中没有count大于50的记录,但是由于指定了upsert为true,如果找不到则会插入一条新记录。

1.2save命令

Mongodb另一个更新命令是save,格式如下:

db.collection.save(obj)

obj代表需要更新的对象,如果集合内部已经存在一个和obj相同的"_id"的记录,Mongodb会把obj对象替换集合内已存在的记录,如果不存在,则会插入obj对象。

这条命令比较简单,示例就省略了。

以上是mongodb更新数据的方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!