18

Spring に mongotemplate を使用していますが、配列内にあるドキュメントの 1 つの値をアトミックにインクリメントする方法を知りたいと思っていました。私たちが持っていると想像してください

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

私が望むのは、_id 341445 の c を 3 から 4 にインクリメントすることです

私はfindAndModifyを使用していますが、配列内のネストされたドキュメントに対してどのように作成できるかわかりません。

よろしく。

4

1 に答える 1

41

配列フィールドの要素を更新するには、位置 $ 演算子を使用できます

たとえば、次の js は、_id 341445 の c を 3 から 4 にインクリメントします。

db.collection.update({a:1, "b._id":341445} , {$inc:{"b.$.c":1}})
于 2013-04-17T01:05:02.820 に答える