mongodb--update高级用法

本文详细介绍了MongoDB中各种更新操作符的使用方法,包括$set、$unset、$rename、$inc等,并通过实例展示了如何进行字段修改、删除、重命名及数值增减等常见操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配合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" }
```

转载于:https://www.cnblogs.com/weloveshare/p/5765395.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值