2012-06-21 15 views
6

En este código que usa el controlador mongodb-native, me gustaría aumentar el valor del campo que especifico en una variable separada. El problema es que el nombre del campo en la cláusula $ inc será 'variable' en este caso, no el contenido de la variable. En la parte de la consulta, la variable seleccionada funciona como se espera y encuentra la identificación correcta.Cómo usar una variable como nombre de campo en 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) { /* ... */ } 
); 

¿Cómo debo hacerlo para que en lugar de la palabra 'variable' exista el contenido de la variable?

Respuesta

13

Establezca la clave de otra variable a su valor y pase eso como un objeto. Nota de acción:

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

Gracias. Eso es exactamente lo que estaba cuidando. – Timo

Cuestiones relacionadas