【发布时间】:2012-11-28 00:15:54
【问题描述】:
我遇到了一些 mongo 问题。我想知道是否有办法在 mongo 控制台命令中执行以下操作,而不是多个 find 和 update 调用。
{
"_id" : ObjectId("50b429ba0e27b508d854483e"),
"array" : [
{
"id" : "1",
"letter" : "a"
},
{
"id" : "2",
"letter" : "b"
}
],
"tester" : "tom"
}
我想用这个新的数组项更新对象
{
"id": "2",
"letter": "c"
}
我使用了这个,addToSet 是有限的,如果它已经存在,它不会将项目插入到数组中,但它不会根据标识符更新项目。在这种情况下,我真的很想根据id 更新此条目。
db.soup.update({
"tester": "tom"
}, {
$addToSet: {
"array": {
"id": "2",
"letter": "c"
}
}
});
这给了我:
{
"_id" : ObjectId("50b429ba0e27b508d854483e"),
"array" : [
{
"id" : "1",
"letter" : "a"
},
{
"id" : "2",
"letter" : "b"
},
{
"id" : "2",
"letter" : "c"
}
],
"tester" : "tom"
}
我真正想要的是:
{
"_id" : ObjectId("50b429ba0e27b508d854483e"),
"array" : [
{
"id" : "1",
"letter" : "a"
},
{
"id" : "2",
"letter" : "c"
}
],
"tester" : "tom"
}
【问题讨论】: