私はドキュメントの例に従っています:
> t.find()
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC",
"comments" : [ { "by" : "joe", "votes" : 3 }, { "by" : "jane", "votes" : 7 } ] }
> t.update( {'comments.by':'joe'}, {$inc:{'comments.$.votes':1}}, false, true )
> t.find()
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC",
"comments" : [ { "by" : "joe", "votes" : 4 }, { "by" : "jane", "votes" : 7 } ] }
これは、Joeの投票数を検索してインクリメントする方法を示しています。私が達成したいのは、ジョーの投票数を照会するときにジェーンの投票数を増やすことです。私の場合、comments
は常に長さ2の配列です。おそらく、現在の(機能していない)構文で最もよく示されます。
t.update( {'comments.by':'joe'}, {$inc:{'comments[1-$].votes':1}}, false, true )
ジョーが最初に配列されているので、ここにいると思い$
ました。0
他の配列インデックスを取得するために、私1-$
はその仕事をすると思いましたが、そうではありません。
照会されたもの以外の配列要素とどのように一致させることができますか?