2013-08-29 15 views
6

Ich versuche, eine Variable als Feldname in einer Update-Anweisung zu verwenden und es funktioniert überhaupt nicht, irgendwelche Vorschläge?Verwenden von Variablen in MongoDB Update-Anweisung

zum Beispiel:

COLLECTIONNAME.update(
    { _id: this._id }, 
    { $set: { VARIABLE1 : VARIABLE2 } } 
); 

eigentlichen Code:

'blur .editable' : function() { 
     var target = event.currentTarget.value; 
     var field = event.currentTarget.name; 
     field = ' " ' + field + ' " '; 
     Hostings.update({ _id: this._id },{ $set: { field : target } }); 
    } 

Antwort

12

Sie können es auf diese Weise tun:

'blur .editable' : function() { 
    var target = event.currentTarget.value; 
    var field = event.currentTarget.name; 

    var obj = {}; 
     obj[field] = target; 
    Hostings.update({ _id: this._id },{ $set: obj }); 
} 

JavaScrip Objekte auf zwei Arten zugegriffen werden kann:

object.attribute 

oder

object["attribute"] 

wenn Sie die zweite Methode verwenden Sie es mit einer variablen

+0

schön! Ich musste nur diese Zeile entfernen: field = '"' + field + '"'; und es hat perfekt funktioniert. Vielen Dank! – glasses

+0

Großartig :) Ich habe die Antwort aktualisiert, um den Fehler zu entfernen –

1

für Ihre Anfrage
COLLECTIONNAME.update({ _id: this._id },{ $set: { VARIABLE1 : VARIABLE2 } }); mongodb nehmen Wert von variable2 zugreifen können, aber es wird prüfen, „VARIABLE1“ ein Feld im Dokument sein.

Für eine Variable, deren Wert vorbei ist ein Feldname:

Sie müssen ein Javascript-Objekt erstellen und verwenden Sie wie folgt vor:

var obj={}; 
obj[VARIABLE1] = VARIABLE2; //where VARIABLE1 and VARIABLE2 are getting values from elsewhere earlier 

Wenn Sie mehrere Felder auf diese Weise haben wollen, fügen sie ihn einfach auf das gleiche Objekt:

obj[VARIABLE3]= VARIABLE4; 

Dann aktualisiere Betrieb als:

db.collectionname.update({ _id: this._id },{ $set: obj });