我有一个 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"
}