少しモンゴの問題があります。find
複数のandupdate
呼び出しではなく、mongoコンソールコマンドで次のことを行う方法があるかどうか疑問に思っていました。
{
"_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"
}