mongodb update使用时遇上的问题

2018-01-19  本文已影响0人  扎哈_

mongodb 更新:$set 使用这个操作符会让没有这个字段的documents新添这个字段

更新数组中某些满足特定条件的对象字段,需要使用$elemMatch操作符
例如:

{
    "_id" : ObjectId("5a5db8d519dd7f071b82f2ab"),
    "skillName" : "滑雪",
    "mySkills" : [ 
        {
            "skillId" : "5a5db7c519dd7f071b82f2a8",
            "Score" : NumberLong(7000),
            "nominateCount" : NumberLong(0)
        }, 
        {
            "skillId" : "5a5db9ee19dd7f071b82f2ae",
            "Score" : NumberLong(3000),
            "nominateCount" : NumberLong(0)
        }
    ]
}

如果想只修改mySkills 的第二个元素的nominateCount
就用:
db.XXX.update({ "mySkills": { $elemMatch : { "Score" : NumberLong(3000) }}},{"mySkills.$" : NumberLong(3100)}, false)
下列写法将导致少于最大数组元素数量的数组将出现null的字符数组

db.masterInfo.update({ "mySkills": { $elemMatch : { "Score" : {$exists :true} }}},{ $set : {"mySkills.$.peerNominateCount" : NumberLong(0) }}, {multi:true}, false)

如果出现需要分片Key的错误时,记得一定要加 {multi:true}这个参数

上一篇 下一篇

猜你喜欢

热点阅读