2012-06-21 3 views
6

В этом коде, который использует собственный драйвер mongodb, я хотел бы увеличить значение поля, которое я укажу в отдельной переменной. Проблема в том, что имя поля в предложении $ inc будет «переменным» в этом случае, а не содержимым переменной. В части запроса выбранная переменная работает как ожидалось и находит правильный идентификатор.Как использовать переменную как имя поля в 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