How to use a variable as a field name in mongodb-native findAndModify?

Problem

In this code that uses the mongodb-native driver I'd like to increase the value of the field which I specify in a separate variable. The problem is that the field name in the $inc clause will be 'variable' in this case, not the contents of the variable. In the query part the variable selected works as expected and finds the correct 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) { /* ... */ }
);

How should I do it so that instead of the word 'variable' there will be the contents of the variable?

Problem courtesy of: Timo

Solution

Set the key of another variable to its value and pass that as an object. Note of action:

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} }
Solution courtesy of: Menztrual

Discussion

There is currently no discussion for this recipe.

This recipe can be found in it's original form on Stack Over Flow.