2012-04-15 15 views
3

Ist es möglich, in MongoDB einen selbstreferenzierten Wert in einer Aktualisierungsabfrage zu erhalten? In MySQL können Sie laufen:Verwenden von MongoDB-selbstreferenzierten Werten in Abfrage

UPDATE table SET column1 = column2 + column3,...

Von dem, was ich weiß, kann nur MapReduce verwendet werden, um diese während serverseitige in MongoDB zu tun. Wie verwende ich MapReduce, um dies zu tun?

Antwort

3

Ist es möglich, einen selbstreferentiellen Wert in einer Aktualisierungsabfrage in MongoDB zu erhalten?

Nein, dieses Update ist mit dem normalen Abfrage-/Aktualisierungssystem nicht möglich.

Soweit ich weiß, kann nur MapReduce verwendet werden, während serverseitig in MongoDB.

Map/Reduce wird verwendet, um vorhandene Daten zusammenzufassen und diese Daten in einer separaten Sammlung/Tabelle auszugeben. Map/Reduce soll keine bestehenden Daten aktualisieren.

Um dieses Update mit MongoDB ausführen zu können, müssen Sie eine einfache for-Schleife über die gesamte Sammlung ausführen und diese jeweils aktualisieren. Sie können dies von jedem der Treiber einschließlich der Shell tun.

db.table.find().forEach(function(x) { 
    var newValue = x.column2 + x.column3; // Add column2 & 3 
    db.table.update({_id: x._id}, { $set: { column1: newValue } }); // Set the value on column1 
}) 
+1

Gute Antwort. Kleiner Hinweis: Sie sollten eine abschließende Paranthese am Ende Ihres Beispiels hinzufügen, um es zu einer funktionierenden Aussage zu machen. –

Verwandte Themen