Aktualisierung: Wenn Sie nur die Struktur eines Dokuments ändern müssen, ohne die Werte zu ändern, finden Sie in der Antwort von gipset eine nette Lösung.
Laut einem (jetzt nicht verfügbaren) Kommentar auf der Update-Dokumentationsseite können Sie die Eigenschaften des aktuellen Dokuments nicht innerhalb eines update()
referenzieren .
Sie müssen alle Dokumente durchlaufen und wie folgt aktualisieren:
db.events.find().snapshot().forEach(
function (e) {
// update document, using its own properties
e.coords = { lat: e.lat, lon: e.lon };
// remove old properties
delete e.lat;
delete e.lon;
// save the updated document
db.events.save(e);
}
)
Eine solche Funktion kann auch in einem Map-Reduce-Job oder einem serverseitigen db.eval()
verwendet werden Job, je nach Bedarf.