2012-06-21 8 views
6

In questo codice che utilizza il driver mongodb nativo vorrei aumentare il valore del campo che ho specificato in una variabile separata. Il problema è che il nome del campo nella clausola $ inc sarà 'variabile' in questo caso, non il contenuto della variabile. Nella parte della query la variabile selezionata funziona come previsto e trova l'id corretto.Come utilizzare una variabile come nome di campo in 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) { /* ... */ } 
); 

Come devo fare in modo che al posto della parola 'variabile' ci saranno il contenuto della variabile?

risposta

13

Impostare la chiave di un'altra variabile sul valore e passarla come oggetto. Nota di azione:

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

Grazie. Questo è esattamente quello che stavo cercando. – Timo

Problemi correlati