2013-04-16 17 views
12

私はSpring用にmongotemplateを使用しています。アトミックに配列内にあるドキュメントの値をどのようにインクリメントできるのでしょうか。私たちは、私が希望する_id 341445Mongodbネストされた配列内のインクリメント値

私はfindAndModifyを使用しているが、私は、私はネストされた文書のためにそれを作ることができる方法を知らないための4から3からの増分cは

{'a':1, 
    b:[{_id:341432, 
     c:2 
     }, 
     {_id:341445, 
     c:3 
     }]}; 

である持っていることを想像してみてアレイ。

よろしくお願いいたします。

+0

これまでのところ唯一のもの私は、b.0.c = 11111のような配列のインデックスを決定するのが良いと思いますか? – paul

答えて

23

配列フィールド内の要素を更新するには、例えばpositional $ operator

を使用することができますが、_id 341445のための3から4へ次のJS単位のC:

db.collection.update({a:1, "b._id":341445} , {$inc:{"b.$.c":1}}) 
+5

ありがとうございます!しかし、あなたの答えはJavaに外挿する必要があることを覚えておいてください。 – paul

+0

upsertで更新クエリを使用すると、これは機能しません。 –

+0

ありがとう、ありがとう、ありがとう。私はこれを稼働させるために3時間以上を費やしてきました!!!素晴らしい答え! –

関連する問題