MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB:Aktualisieren von Dokumenten mit Daten aus demselben Dokument

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.