美文网首页
mongodb update使用时遇上的问题

mongodb update使用时遇上的问题

作者: 扎哈_ | 来源:发表于2018-01-19 12:46 被阅读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}这个参数

    相关文章

      网友评论

          本文标题:mongodb update使用时遇上的问题

          本文链接:https://www.haomeiwen.com/subject/oyyooxtx.html