Unterschied zwischen findOneAndDelete() und findOneAndRemove()
Ich bin nicht in der Lage zu differenzieren findOneAndDelete() Und findOneAndRemove() in der Mungo documentaion.
Abfrage.der Prototyp.findOneAndDelete()
Diese Funktion unterscheidet sich geringfügig vom Modell.findOneAndRemove() in
findOneAndRemove() wird eine MongoDB findAndModify () - Befehl, wie
im Gegensatz zu einem findOneAndDelete () - Befehl. Für die meisten Mungo Anwendungsfälle,
diese Unterscheidung ist rein pedantisch. , Die Sie verwenden sollten
findOneAndDelete (), es sei denn, Sie haben einen guten Grund, nicht zu.
- "Sie verwenden sollten, findOneAndDelete (), es sei denn, Sie haben einen guten Grund, nicht zu" Grund, wie, was ?
findOneAndDelete()
führt die MongoDB findOneAndDelete() - Befehl undfindOneAndRemove()
führt die MongoDB findAndModify() - Befehl- Warum "findOneAndRemove() führt die MongoDB findAndModify()" wenn es schließlich löschen Sie das Dokument aus der Sammlung?
- Und warum sagen Sie "Sie verwenden sollten, findOneAndDelete (), es sei denn, Sie haben einen guten Grund, nicht zu"
- Es ist nicht "endlich löschen Sie das Dokument aus der collection", die es gelöscht das Dokument aus der Sammlung mit
findAndModify
Befehl mitremove: true
option sofort. - Dann in welchen Fällen sollte ich mit "findOneAndDelete() "
- Wenn findAndModify ist nicht genug, Sie wollen z.B. Projekt gefundenen Dokumente, Ihre filter nicht die shard-Schlüssel, etc hast Du die links zu den docs, werfen Sie einen Blick und vergleichen, welche Version Ihren Bedürfnissen entspricht.
- Wie @AlexBlex vorgeschlagen, können wir eine der beiden basiert auf dem use case. Außerdem
findOneAndDelete()
eingeführt wurde in der letzten version, im Vergleich zu anderen. - Hier ya go
Du musst angemeldet sein, um einen Kommentar abzugeben.
In MongoDB native client (Mungo ist anders) vorbei
{ remove: true }
zufindAndModify
macht es entfernen Sie das Gefundene Dokument, sein Verhalten wäre in diesem Fall erscheinen ganz ähnlichfindOneAndDelete
.Es gibt jedoch einige Unterschiede bei der Verwendung von anderen Optionen:
query
,sort
,doc
(das update-Objekt)options
und eincallback
. findOneAndDelete dauert nur 3 (filter
oder Abfrageoptions
und eincallback
)options
fürfindAndModify
gehörenw
,wtimeout
undj
für das schreiben betrifft, als:options
fürfindOneAndDelete
beinhalten nicht schreiben betrifft die Konfiguration.findAndModify
können Sie das neue Dokument und entfernen Sie es zur gleichen Zeit.Beispiel:
Beide sind fast ähnlich, außer findOneAndRemove verwendet findAndModify mit Markierung entfernen-und Zeit-Komplexität wird ein bisschen höher zu vergleichen, um findOneAndDelete, weil Sie dabei sind, ein update. Löschen Sie sind immer schneller.
In Mungo findOneAndDelete funktioniert auf die gleiche Weise wie findOneAndRemove. Sie sehen beide ein Objekt durch seine Eigenschaften in JSON, geht dann voran, um es zu löschen und ebenso wie die Rückgabe Objekt wieder nach dem löschen. Wenn Sie mit dem native mongodb als Datenbank findOneAndDelete könnte für Sie nützlich sein, aber im Fall von Mungo es ist veraltet, ich kann Ihnen raten, zu verwenden, findOneAndDelete zu führen Ihren Betrieb auf der Grundlage der neuesten Mungo und nodejs-Konfiguration wie in diesem Zeitraum. https://github.com/Automattic/mongoose/issues/6880
DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
wollen Sie sagen,findOneAndRemove
verwendetcollection.remove
undfindOneAndDelete
verwendet (collection.deleteOne
odercollection.deleteMany
) ?Ich würde vorschlagen, Sie verwenden findOneAndDelete().
Mongoose bietet sowohl die Funktionen zum Umgang mit Daten unter Verwendung des ORM-und auch features schreiben Sie direkt in die Datenbank, mit findOneAndDelete (), die eine von den letzteren. Schreiben in die Datenbank direkt ist gefährlicher als laufen Sie Gefahr, nicht den Aufruf der middleware oder Prüfer, möglicherweise der Einreichung einer teilweisen oder unvollständigen Daten in der Datenbank. Beachten Sie, dass ich sagte, es ist mehr gefährlich, nicht, dass es flach aus gefährlich, findOneAndDelete() geht nur während der ORM hinzufügen Sicherheit.
findOneAndRemove gibt das Dokument entfernt, so dass, wenn Sie entfernen ein Dokument, das Sie später entscheiden, sollten nicht entfernt werden, können Sie stecken Sie es zurück in die db. Sicherzustellen, dass Ihre Logik Klang, bevor Sie Sie entfernen das Dokument vorgezogen wird, prüft danach IMO.
findOneAndDelete hat der sort-parameter, die verwendet werden können, um zu beeinflussen, welche-Dokument aktualisiert. Es hat auch eine Zeitbegrenzung parameter die Steuerung in die Bedienung muss komplett
Tun Sie beide das gleiche (entfernen eines Dokuments bilden eine mongodb-Datenbank), aber Sie haben einige Unterschiede, und die häufige, nützliche Unterschied ist, dass
findOneAndRemove()
gibt das Dokument entfernt, wenn Sie interessiert sind, es zu benutzen, nachdem seine entfernt.