5

ID を持たないドキュメントのネストされた配列を持つドキュメントがあります

_id: adsjfdsau7Hukad,
'nested':[{ a:'123456',b:'zzzzzzzzz'},
          {a:'788123',b:'6yuuuuuu'},
          {a:'123456',b:'ooo998uj'}] 

識別されたドキュメントの指定された要素で、新しいプロパティ 'c' をインクリメントしたいと考えています。例えば:

db.collection.update({_id:'adsjfdsau7Hukad'},{$inc:{'nested.2.c':1}})

これは、要素の序数位置識別子を明示的に記述できる場合に機能します。しかし、要素の序数位置の変数を渡す必要があり、その方法が見つかりませんでした。私はこれを試しました:

var num = 4 ## as example
db.collection.update({_id:'adsjfdsau7Hukad','nested.$': num},{$inc:{'nested.$.c':1}})

しかし、これはうまくいかないようです。

何か案は?

4

1 に答える 1

9

プログラムでキーを生成する必要があります。

シェル内:

var num = 4;
var inc = {};
inc['nested.' + num + '.c'] = 1;
db.collection.update({_id: 'adsjfdsau7Hukad'}, {$inc: inc})

ピモンゴで:

num = 4
db.collection.update(
    {'_id': 'adsjfdsau7Hukad'},
    {'$inc': {'nested.' + str(num) + '.c': 1}})
于 2013-08-05T22:27:44.877 に答える