{ "title": "标题", "applys":[
{ "UID": 1, "name": "张三", "score": "99" },
{ "UID": 2, "name": "李四", "score": "90" },
{ "UID": 3, "name": "王二", "score": "89" }
],
"systemtime": "2015-05-13 11:01:21"
}
如何修改UID=2的score值?
db.foo.bar.update({"applys.$0.score":{$set:"100"}},{"applys.$0.UID":2})一个update中可以用$0, $1, ...来区分要更改的字段。
db.foo.bar.update({"applys.$0.score":{$set:"100"}},{"applys.$0.UID":2}) applys.$0 的意思 不是 UID=1 的数据吗?这样修改的不是UID=1的score吗?
这样能修改UID=2的数据吗?applys.$0 指向的是 UID=1的那条数据啊
可以把"$数字"理解成一个变量,这个变量代表了你的条件里的{"applys.$0.UID":2}这个元素。
这个地方只要条件和修改里的变量名匹配即可修改,写成db.foo.bar.update({"applys.$100.score":{$set:"100"}},{"applys.$100.UID":2})也是可以的。