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}这个参数
网友评论