mongodb update使用时遇上的问题

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}这个参数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容