6

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

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) { /* ... */ }
);

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

4

1 に答える 1

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} }
于 2012-06-21T08:09:03.020 に答える