2016-03-07 7 views
17

MongoDB Bulk-Operationen haben zwei Möglichkeiten:Was ist der Unterschied zwischen replaceOne() und updateOne() in MongoDB?

  1. Bulk.find.updateOne()

    Fügt eine einzelne Dokument Aktualisierungsoperation auf eine Schüttlistenoperation. Die Operation kann ein vorhandenes Dokument ersetzen oder bestimmte Felder in einem vorhandenen Dokument aktualisieren.

  2. Bulk.find.replaceOne()

    Fügt eine einzelne Dokument Ersatzoperation zu einer Bulk-Liste Operationen. Verwenden Sie die Bulk.find() -Methode, um die Bedingung anzugeben, die das zu ersetzende Dokument bestimmt. Die Methode Bulk.find.replaceOne() begrenzt die Ersetzung auf ein einzelnes Dokument.

Gemäß der Dokumentation, die beide dieser beiden Methoden kann ein passendes Dokument ersetzen. Verstehe ich richtig, dass updateOne() eine allgemeinere Methode ist, die das Dokument entweder genau wie replaceOne() ersetzen kann, oder einfach seine spezifischen Felder aktualisieren?

Antwort

19

Mit replaceOne() können Sie nur das gesamte Dokument ersetzen, aber updateOne() ermöglicht das Aktualisieren von Feldern, die Sie in der Frage notiert haben.

Das bedeutet aber auch können Sie die Update-Operatoren verwenden:

https://docs.mongodb.org/manual/reference/operator/update/

Und IIRC können Sie das Schema ändern updateOne() verwenden, die Sie nicht mit replaceOne()

+2

tun kann, was man mit „das bedeuten, ändern sich Schema"? – caub

+2

replace ersetzt ein Dokument durch ein neues mit den gleichen Parametern. Mit update können Sie Parameter hinzufügen/entfernen, aus denen das Dokument besteht. – Hughzi

+3

ah ok, also immer ersetzen '_id' – caub