1

レコードの更新に問題があります。私の文書構造は次のようなものです:

"_id" : "1141825507009",
    "person" : [
        {
            "amount" : 25,
            "id" : "1141825507009"
        }
]

person.id が 1141825507009 の場合、person.amount を 3 ずつ増やしたいと思います。簡単です。どうですか:

Increment person.amount  by 3 if person.id exist.
Add to person list with amount 3 and id 239something845 if person.id does not exist in list. 
4

1 に答える 1

0

あなたが望むのはhttps://jira.mongodb.org/browse/SERVER-340だと思います。視聴/投票することをお勧めします。

アトミックに行う必要がない場合は、次のようにすることができます。

db.foo.update({"person.id" : {$exists : false}, /* other criteria */}, 
    {$inc : {"person.amount":3}});
var result = db.runCommand({getLastError:1})
if (result.n == 0) { // nothing updated, person.id must exist
    db.foo.update({/* criteria */}, 
        {$addToSet : {person : {amount:3, id:"239something845"}}});
}
于 2012-07-16T14:17:14.853 に答える