FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
Das obige scheint nicht zu funktionieren. Die Aufzeichnungen sind noch da.
Kann jemand reparieren?
FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
Das obige scheint nicht zu funktionieren. Die Aufzeichnungen sind noch da.
Kann jemand reparieren?
Wenn Sie keine Lust zum Iterieren haben, versuchen Sie es FBFriendModel.find({ id:333 }).remove( callback );
oderFBFriendModel.find({ id:333 }).remove().exec();
mongoose.model.find
gibt eine Abfrage zurück , die eine remove
Funktion hat .
Update für Mongoose v5.5.3 - remove()
ist jetzt veraltet. Verwendung deleteOne()
, deleteMany()
oderfindOneAndDelete() instead.
.exec()
jedoch überhaupt nicht. Wird.exec()
benötigt, gibt es Nebenwirkungen bei der Verwendung oder nicht?UPDATE: Mungo-Version (5.5.3)
remove () ist veraltet und Sie können stattdessen deleteOne (), deleteMany () oderulkWrite () verwenden.
Ab
"mongoose": ">=2.7.1"
sofort können Sie das Dokument direkt mit der.remove()
Methode entfernen , anstatt das Dokument zu finden und dann zu entfernen, was mir effizienter und einfacher zu warten erscheint.Siehe Beispiel:
AKTUALISIEREN:
Ab Mungo
3.8.1
gibt es verschiedene Methoden, mit denen Sie ein Dokument direkt entfernen können, z. B.:remove
findByIdAndRemove
findOneAndRemove
Weitere Informationen finden Sie in den API-Dokumenten für Mungos .
quelle
remove(query)
könnte möglicherweise Ihre gesamte Sammlung leeren, wenn Sie versehentlich passierenquery = {}
. Aus diesem Grund bevorzuge ich es,findOneAndRemove(query)
wenn ich nur ein Dokument entferne .Model.remove({ _id: 'whatever' }).exec().then(...)
docs
ist eine Reihe von Dokumenten. Es gibt also keinemongooseModel.remove()
Methode.Sie können jedes Dokument im Array separat iterieren und entfernen.
Oder - da es so aussieht, als würden Sie die Dokumente anhand einer (wahrscheinlich) eindeutigen ID finden - verwenden Sie
findOne
stattfind
.quelle
Dies ist für mich das Beste ab Version 3.8.1:
Und es ist nur ein DB-Aufruf erforderlich. Verwenden Sie diese
remove
Option, da Sie vor dem Suchen und Entfernen keine Aktionen ausführen.quelle
pre 'remove'
Aktionen ausführen müssen, funktioniert es einwandfrei.Einfach machen
quelle
mongoose.model.find()
Gibt ein Abfrageobjekt zurück, das auch eineremove()
Funktion hat.Sie können auch verwenden
mongoose.model.findOne()
, wenn Sie nur ein eindeutiges Dokument entfernen möchten.Andernfalls können Sie auch dem traditionellen Ansatz folgen, bei dem Sie zuerst das Dokument abrufen und dann entfernen.
Im Folgenden finden
model
Sie die folgenden Möglichkeiten für Objekte, um Dokumente zu entfernen:yourModelObj.findByIdAndRemove(id, options, callback)
yourModelObj.remove(conditions, callback);
quelle
remove()
wurde veraltet. Verwenden SiedeleteOne()
,deleteMany()
oderbulkWrite()
.Der Code, den ich benutze
quelle
(node:9132) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
Zur Verallgemeinerung können Sie verwenden:
Ein anderer Weg, dies zu erreichen, ist:
quelle
Seien Sie vorsichtig mit findOne und entfernen Sie!
Der obige Code entfernt ALLE Benutzer mit dem Namen "Alice" anstelle des ersten .
Übrigens ziehe ich es vor, Dokumente wie diese zu entfernen:
Oder geben Sie einen Rückruf ein und lassen Sie exec () weg
quelle
Ref: http://mongoosejs.com/docs/api.html#model_Model.remove
quelle
Wenn Sie nur ein zu entfernendes Objekt suchen, können Sie es verwenden
In diesem Beispiel wird Mongoose basierend auf der Übereinstimmung mit req.params.id gelöscht.
quelle
.remove()
funktioniert wie.find()
:quelle
Ich bevorzuge die Versprechensnotation, wo Sie zB brauchen
quelle
Zum Entfernen von Dokumenten bevorzuge ich die Verwendung
Model.remove(conditions, [callback])
Informationen zum Entfernen finden Sie in der API-Dokumentation: -
http://mongoosejs.com/docs/api.html#model_Model.remove
In diesem Fall lautet der Code: -
Wenn Sie Dokumente entfernen möchten, ohne auf eine Antwort von MongoDB zu warten, keinen Rückruf übergeben, müssen Sie exec für die zurückgegebene Abfrage aufrufen
quelle
Sie können die Abfrage einfach direkt in der Entfernungsfunktion verwenden, also:
quelle
Sie können immer die integrierte Funktion Mongoose verwenden:
quelle
Update:
.remove()
wird abgeschrieben, funktioniert aber immer noch für ältere Versionenquelle
Mit der Methode remove () können Sie entfernen.
quelle
Das hat bei mir funktioniert, versuchen Sie es einfach:
quelle
Model.remove
ist veraltetGemäß der Antwort von Samyak Jain verwende ich Async Await
quelle
Ich mag dieses Muster in asynchronen / wartungsfähigen Express / Mongoose-Apps sehr:
quelle
quelle