这篇文章主要介绍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有什么不同之处的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!