2016-07-02 17 views
2

変数に格納されているインデックスを使用してmongoDBドキュメントの配列を更新するにはどうすればよいですか?mongoDBドキュメント内の可変インデックスによる配列の更新

{ 
    _id: 'IDString', 
    field: [ bla, bla, old, bla ]; 
} 

let i = 2; 
Collection.update(
    { _id: 'IDString' }, 
    { $set: 
     { 'field.$.i': 'new' } 
    } 
); 

だから、結果は次のようになります。私はi変数を使用したいと

{ 
    _id: 'IDString', 
    field: [ bla, bla, new, bla ]; 
} 

私のコードは、動作しないでしょう。

+0

可能な複製と更新](http://stackoverflow.com/questions/33968094/meteor-mongodb-inc-with-update) – styvane

答えて

0

下記のコメント。配列名をドット(。)と0から始まるインデックス位置に連結し、引用符で囲む必要があります。

だからあなたの例では、次のコードスニペットは、この示し

var update = { "$set": { "field.2": "new" } } 

生成するために、動的に更新文書を設定する必要があります:

var i = 2, 
    update = { "$set": {} }; 

update["$set"]["field."+i] = "new"; 
db.collection.update({ "_id": "IDString" }, update) 
[流星のMongoDB $ Inc.の
0
Collection.update(
    { _id: 'IDString', field.2 : 1 }, 
    { $set: { 
     "field.$" : "new" } 
    } 
) 

これは動作し、そうでない場合は必要があります - これは、ゼロベースのインデックス位置によって配列の要素にアクセスしますので、あなたの更新文書を設定するdot notationの構文を使用し

関連する問題