大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍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" : "hello world2!", "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" : "hello world2!", "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" : "hello world2!", "num" : 40, "size" : 10, "sname" : "ssk", "type" : "3", "uid" : "20120002" } { "_id" : ObjectId("50026affdeb4fa8d154f8572"), "desc" : "hello world1!", "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" : "hello world2!", "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有什么不同之处的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!