mongodb中$inc和$set有什么不同之处
这篇文章主要介绍mongodb中$inc和$set有什么不同之处,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1、$inc
这个修改器干什么使的呢?看看下面示例的具体操作后的结果即可知道。
示例文档:{"uid":"201203","type":"1",size:10}
>db.b.insert({"uid":"201203","type":"1",size:10})>db.b.find(){"_id":ObjectId("5003b6135af21ff428dafbe6"),"uid":"201203","type":"1","size":10}>db.b.update({"uid":"201203"},{"$inc":{"size":1}})>db.b.find(){"_id":ObjectId("5003b6135af21ff428dafbe6"),"uid":"201203","type":"1","size":11}>db.b.update({"uid":"201203"},{"$inc":{"size":2}})>db.b.find(){"_id":ObjectId("5003b6135af21ff428dafbe6"),"uid":"201203","type":"1","size":13}>db.b.update({"uid":"201203"},{"$inc":{"size":-1}})>db.b.find(){"_id":ObjectId("5003b6135af21ff428dafbe6"),"uid":"201203","type":"1","size":12}
得出结论:修改器$inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作。
(这里有个问题:上篇中说到更新默认只对满足条件的记录集中第一个文档进行更新,那么使用$inc修改器之后,还是一样吗?)
2、$set
用来指定一个键并更新键值,若键不存在并创建。来看看下面的效果:
>db.a.findOne({"uid":"20120002","type":"3"}){"_id":ObjectId("500216de81b954b6161a7d8f"),"desc":"helloworld2!","num":40,"sname":"jk","type":"3","uid":"20120002"}--size键不存在的场合>db.a.update({"uid":"20120002","type":"3"},{"$set":{"size":10}})>db.a.findOne({"uid":"20120002","type":"3"}){"_id":ObjectId("500216de81b954b6161a7d8f"),"desc":"helloworld2!","num":40,"size":10,"sname":"jk","type":"3","uid":"20120002"}--sname键存在的场合>db.a.update({"uid":"20120002","type":"3"},{"$set":{"sname":"ssk"}})>db.a.find(){"_id":ObjectId("500216de81b954b6161a7d8f"),"desc":"helloworld2!","num":40,"size":10,"sname":"ssk","type":"3","uid":"20120002"}{"_id":ObjectId("50026affdeb4fa8d154f8572"),"desc":"helloworld1!","num":50,"sname":"jk","type":"1","uid":"20120002"}--可改变键的值类型>db.a.update({"uid":"20120002","type":"3"},{"$set":{"sname":["Java",".net","c++"]}})>db.a.findOne({"uid":"20120002","type":"3"}){"_id":ObjectId("500216de81b954b6161a7d8f"),"desc":"helloworld2!","num":40,"size":10,"sname":["java",".net","c++"],"type":"3","uid":"20120002"}
对于内嵌的文档,$set又是如何进行更新的内嵌的文档的呢,请看下面的示例:
示例文档:{"name":"toyota","type":"suv","size":{"height":10,"width":5,"length":15}}
>db.c.findOne({"name":"toyota"}){"_id":ObjectId("5003be465af21ff428dafbe7"),"name":"toyota","type":"suv","size":{"height":10,"width":5,"length":15}}>db.c.update({"name":"toyota"},{"$set":{"size.height":8}})>db.c.findOne({"name":"toyota"}){"_id":ObjectId("5003be465af21ff428dafbe7"),"name":"toyota","type":"suv","size":{"height":8,"width":5,"length":15}}>db.c.update({"name":"toyota"},{"$set":{"size.width":7}})>db.c.findOne({"name":"toyota"}){"_id":ObjectId("5003be465af21ff428dafbe7"),"name":"toyota","type":"suv","size":{"height":8,"width":7,"length":15}}
可见:对于内嵌文档在使用$set更新时,使用"."连接的方式。
以上是mongodb中$inc和$set有什么不同之处的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。