2012-06-21 7 views
6

mongodb-nativeドライバを使用するこのコードでは、別の変数で指定するフィールドの値を増やしたいと考えています。問題は、$ inc句のフィールド名が変数の内容ではなく、この場合「変数」になることです。クエリ部分では、選択された変数は期待どおりに機能し、正しいIDを検出します。mongodb-nativeのフィールド名として変数を使用する方法findAndModify?

var selected = 'id_of_the_selected_one'; 
var variable = 'some_string'; 
collection.findAndModify(
    {_id : selected}, 
    {}, 
    {$inc : {variable : 1}}, 
    {new : true, upsert : true}, 
    function(err, autoincrement) { /* ... */ } 
); 

「変数」という単語の代わりに変数の内容が表示されるように、どうすればよいですか?

答えて

13

別の変数のキーを値に設定し、それをオブジェクトとして渡します。 の動作の注:

var selected = 'id_of_the_selected_one'; 
var variable = 'some_string'; 
var action = {}; 
action[variable] = 1; // the value 

collection.findAndModify(
    {_id : selected}, 
    {}, 
    {$inc : action}, 
    {new : true, upsert : true}, 
    function(err, autoincrement) { /* ... */ } 
); // Same as {$inc: {'some_string': 1} } 
+0

ありがとうございます。それはまさに私が探していたものです。 – Timo

関連する問題