文章正文

mongodb--update高级用法

【文章】2020-04-23

简介mongodb--update高级用法

配合update使用的函数

$set       修改某列的值
$unset      删除某个列
$rename        重命名某个列
$inc       增长某个列
$setOnInsert  当upsert为true时,并且发生了insert操作时,可以补充的字段eg:
db.stu.update(
{name:'wukong'},
{$set:{name:'dzsf'},  
$unset:{spike:1},  // 注意这个1是要删除的意思  
$rename:{sex:'gender'},  
$inc:{age:16}});

set

db.mytest.update({"age":20},{"$set":{"age":25}})
db.mytest.find()
{"_id":ObjectId("567677824977e7f9805db208"),"name":"jack","age":25}

inc => Interlocked.Add

db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "name" : "jack", "age" : 26 }
db.mytest.update({"age":25},{"$inc":{"age":10}})
db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "name" : "jack", "age" : 26 }
db.mytest.update({"age":26},{"$inc":{"age":10}})
db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "name" : "jack", "age" : 36 }

upsert

如果没有匹配的行,就直接插入该行

db.news.upsert({id:10},{x:10,y:11},{upsert:true});

结合setOnInsert用法,如果找不到id=10的文档,就插入一个修改后的文档,另外,还要加上setOnInsert里面的元素内容

db.news.upsert({id:10},{$set:{x:10,y:11},$setOnInsert:{gender:'male'},{upsert:true}});

push => push array

db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "address" : [  "shanghai" ], "age" : 36, "name" : "jack" }
db.mytest.update({"name":"jack"},{"$push":{"address":"beijing"}})
db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "address" : [  "shanghai",  "beijing" ], "age" : 36, "name" : "jack" }

pop => pop array

db.mytest.update({"name":"jack"},{"$pop":{"address":"beijing"}})
db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "address" : [  "shanghai" ], "age" : 36, "name" : "jack" }

multi

指的是修改多行(默认情况下,查询表达式命中多行只修改一行,如果想一次修改多行,就要把multi设置为true)

db.news.update({age:21},{$set:{age:22}},{multi:true});

addToSet

【就是数组中不可能存在在重复的字符串或者数字】

【自动去重的功能】首先我们用 push 做一个演示,无法有"去重“的功能。

db.mytest.update({"age":36},{"push":{"address":"shanghai"}})
db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "address" : [ "shanghai", "shanghai" ], "age" : 36, "name" : "jack" }

addToSet自动排除演示

db.mytest.update({"age":36},{"$addToSet":{"address":"shanghai"}})
db.mytest.find()
{ "_id" : ObjectId("567677824977e7f9805db208"), "address" : [ "shanghai" ], "age" : 36, "name" : "jack" }

打赏支持

感谢您的支持,加油!

打开微信扫码打赏,你说多少就多少

找书费时,联系客服快速获取!

扫码支持

在线客服8:30-22:30,若离线请留言!

获取教程,请联系在线客服!

扫码支持

在线客服8:30-22:30,若离线请留言!

热门阅读

找PDF电子书,太费时间?

  • 微信扫描二维码,让客服快速查找。
  • 在线客服8:30-22:00,若离线请留言!