2012-09-12 10 views
25

を使用して、私は次のような更新を実行しようとしている:流星を使用してMongoDBのアップデートで変数

Items.update(Session.get('selectedItem'), {'$set': {'directions.0.name': area.value}}) 

をしかし、私はのようなもので、動的方向の配列インデックスを設定する方法に苦しみましたこれは

var index = //a value determined dynamically 
Items.update(Session.get('selectedItem'), {'$set': {'directions[index]name': area.value}}) 

[index]が文字列で囲まれているため、これは機能しません。私もこのようにカスタム文字列を作成しようとしました:

var string = 'directions.'+itemIndex+'.name' 
Items.update(Session.get('selectedItem'), {'$set': {string: area.value}}) 

しかし、それは動作しません。どのようにこれを行う上の任意のアイデア?

答えて

48

あなたはプログラムであなたの$setオブジェクトを構築する必要があります。

var setModifier = { $set: {} }; 
setModifier.$set['directions.' + index + '.name'] = area.value; 
Items.update(Session.get('selectedItem'), setModifier); 

更新

あなたのJavaScript環境は、(4+などのNode.js)computed property namesをサポートしている場合は、ワンステップでこれを行うことができます:

Items.update(Session.get('selectedItem'), { $set: { 
    ['directions.' + index + '.name']: area.value 
}}); 
+1

ありがとうございます。これはいくつか簡単ですが、私はmongodbを学んでいます。 – Goddard

関連する問題