Was ist der Unterschied zwischen updateOne () und replaceOne () in MongoDB?


Antwort 1:

Mit replaceOne () wird das gesamte Dokument ersetzt - Felder im alten Dokument, die nicht im neuen enthalten sind, gehen verloren. Mit updateOne () können neue Felder hinzugefügt werden, ohne die Felder im alten Dokument zu verlieren.

  • Die updateOne () -Methode hat die folgende Form:

db.collection.updateOne ( , , {upsert: , writeConcern: , Zusammenstellung: , arrayFilters: [ , ...]})

Aktualisiert ein einzelnes Dokument innerhalb der Sammlung basierend auf dem Filter.

updateOne () aktualisiert das erste übereinstimmende Dokument in der Sammlung, das dem Filter entspricht, und verwendet die Aktualisierungsanweisungen, um Änderungen anzuwenden.

Wenn upsert: true und keine Dokumente mit dem Filter übereinstimmen, erstellt updateOne () ein neues Dokument basierend auf den Filterkriterien und aktualisiert Änderungen. Siehe Update mit Upsert.

try {db.restaurant.updateOne ({"name": "Abc xyz"}, {$ set: {"_id": 4,}}, {upsert: true});} catch (e) {print (e) ;}

  • Ersetzt ein einzelnes Dokument innerhalb der Sammlung basierend auf dem Filter.

Die Methode replaceOne () hat die folgende Form:

db.collection.replaceOne ( , , {upsert: , writeConcern: , Zusammenstellung: })

Die folgende Operation ersetzt ein einzelnes Dokument mit dem Namen = "abx xyz":

try {db.restaurant.replaceOne ({"name": "abx xyz"}, {"name": "abx xyz", "id": "5"});} catch (e) {print (e); }}


Antwort 2:

Mit replaceOne () können Sie nur das gesamte Dokument ersetzen, während updateOne () das Aktualisieren von Feldern ermöglicht.

Da replaceOne () das gesamte Dokument ersetzt, gehen Felder im alten Dokument, die nicht im neuen enthalten sind, verloren. Mit updateOne () können neue Felder hinzugefügt werden, ohne die Felder im alten Dokument zu verlieren.