2012-06-21 3 views
6

In diesem Code, der den mongodb-nativen Treiber verwendet, möchte ich den Wert des Feldes erhöhen, das ich in einer separaten Variablen angeben. Das Problem ist, dass der Feldname in der $ inc-Klausel in diesem Fall 'Variable' ist, nicht der Inhalt der Variablen. Im Abfrageteil funktioniert die ausgewählte Variable wie erwartet und findet die richtige ID.Wie verwendet man eine Variable als Feldname 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) { /* ... */ } 
); 

Wie soll ich es tun, dass anstelle des Wortes "Variable" wird der Inhalt der Variablen sein?

Antwort

13

Setzen Sie den Schlüssel einer anderen Variablen auf ihren Wert und übergeben Sie diesen als Objekt. Anmerkung aktion:

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

Danke. Genau darauf habe ich geachtet. – Timo

Verwandte Themen