MongoDB生僻操作

1.$setOnInsert 不存在则插入。

文档地址:
https://docs.mongodb.com/manual/reference/operator/update/setOnInsert/#up._S_setOnInsert

示例:
demo collection 中数据如下:

{ "_id" : ObjectId("5aec13d4856ca01363c3615f"), "class" : "a", "v" : 4 }
{ "_id" : ObjectId("5aec13d9856ca01363c36160"), "class" : "b", "v" : 3 }
db.demo.update(
        {class:"d"},
        { 
           $set:{"level":66}, 
            $setOnInsert:{class:"e", v:"6"}  
        },  
        {upsert:true}  
)

操作后由于不存在class为d的数据所以会插入一条{class:”e”, v:”6”} 的数据并且设置level字段为66.

所以demo collection 中数据如下:

{ "_id" : ObjectId("5aec13d4856ca01363c3615f"), "class" : "a", "v" : 4 }
{ "_id" : ObjectId("5aec13d9856ca01363c36160"), "class" : "b", "v" : 3 }
{ "_id" : ObjectId("5b038258bb726243c39a4010"), "class" : "e", "v" : "6", "level" : 66 }

再看:

db.demo.update(
        {class:"e"},
        { 
           $set:{"level":55}, 
           $setOnInsert:{class:"f", v:"6"}  
        },  
        {upsert:true}  
)

由于已经存在class为e的数据,所以不会插入{class:”f”, v:”6”},而是将class为e的一条数据的level设置为55

2. findAndModify 实现字段自增

文档:
https://docs.mongodb.com/v3.0/reference/method/db.collection.findAndModify/#db.collection.findAndModify

> db.b.find()
{ "_id" : "5b038719fb5615acc831d902", "number" : 1 }
db.b.findAndModify(
{
    query:{_id:"5b038719fb5615acc831d902"},
    update:{$inc:{number:1}},
    upsert: true
}
)
> db.b.find()
{ "_id" : "5b038719fb5615acc831d902", "number" : 1 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值