FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
Ce qui précède ne semble pas fonctionner. Les enregistrements sont toujours là.
Quelqu'un peut-il réparer?
FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
Ce qui précède ne semble pas fonctionner. Les enregistrements sont toujours là.
Quelqu'un peut-il réparer?
Si vous n'avez pas envie d'itérer, essayez FBFriendModel.find({ id:333 }).remove( callback );
ouFBFriendModel.find({ id:333 }).remove().exec();
mongoose.model.find
renvoie une requête , qui a une remove
fonction .
La mise à jour pour Mongoose v5.5.3 - remove()
est désormais obsolète. Utiliser deleteOne()
, deleteMany()
oufindOneAndDelete() instead.
.exec()
mais cela ne le fait pas du tout. Est-il.exec()
nécessaire, y a-t-il des effets secondaires à l'utiliser ou non?MISE À JOUR: version Mongoose (5.5.3)
remove () est obsolète et vous pouvez utiliser deleteOne (), deleteMany () ou bulkWrite () à la place.
Dès que
"mongoose": ">=2.7.1"
vous pouvez supprimer le document directement avec la.remove()
méthode plutôt que de trouver le document puis de le supprimer ce qui me semble plus efficace et plus facile à entretenir.Voir l'exemple:
METTRE À JOUR:
Comme pour la mangouste
3.8.1
, il existe plusieurs méthodes qui vous permettent de supprimer directement un document, par exemple:remove
findByIdAndRemove
findOneAndRemove
Reportez-vous à la documentation de l'API mangouste pour plus d'informations.
la source
remove(query)
pourrait potentiellement vider votre collection entière si vous passez accidentellementquery = {}
. Pour cette raison, je préfèrefindOneAndRemove(query)
que je retire un seul document.Model.remove({ _id: 'whatever' }).exec().then(...)
docs
est un tableau de documents. il n'a donc pas demongooseModel.remove()
méthode.Vous pouvez parcourir et supprimer chaque document du tableau séparément.
Ou - puisqu'il semble que vous trouviez les documents par un identifiant (probablement) unique - utilisez
findOne
plutôt quefind
.la source
Pour moi, c'est le meilleur de la version 3.8.1:
Et cela ne nécessite qu'un seul appel DB. Utilisez ceci étant donné que vous n'effectuez aucune
remove
action avant la recherche et la suppression.la source
pre 'remove'
actions, cela fonctionne bien.Faites simplement
la source
mongoose.model.find()
renvoie un objet de requête qui a également unremove()
fonction.Vous pouvez également l'utiliser
mongoose.model.findOne()
si vous souhaitez supprimer un seul document unique.Sinon, vous pouvez également suivre l'approche traditionnelle lorsque vous récupérez d'abord le document, puis le supprimez.
model
Vous trouverez ci-dessous les méthodes permettant de supprimer un ou plusieurs documents sur un objet:yourModelObj.findByIdAndRemove(id, options, callback)
yourModelObj.remove(conditions, callback);
la source
remove()
est obsolète. UtiliserdeleteOne()
,deleteMany()
oubulkWrite()
.Le code que j'utilise
la source
(node:9132) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
Pour généraliser, vous pouvez utiliser:
Une autre façon d'y parvenir est:
la source
Soyez prudent avec findOne et supprimez!
Le code ci-dessus supprime TOUS les utilisateurs nommés «Alice» au lieu du premier uniquement.
Soit dit en passant, je préfère supprimer des documents comme celui-ci:
Ou fournissez un rappel et omettez l'exec ()
la source
Réf: http://mongoosejs.com/docs/api.html#model_Model.remove
la source
Si vous recherchez un seul objet à supprimer, vous pouvez utiliser
Dans cet exemple, Mongoose supprimera en fonction de la correspondance req.params.id.
la source
.remove()
fonctionne comme.find()
:la source
Je préfère la notation de promesse, où vous avez besoin, par exemple
la source
Pour supprimer un document, je préfère utiliser
Model.remove(conditions, [callback])
Veuillez consulter la documentation de l'API pour la suppression: -
http://mongoosejs.com/docs/api.html#model_Model.remove
Dans ce cas, le code sera: -
Si vous souhaitez supprimer des documents sans attendre une réponse de MongoDB, ne passez pas de rappel, alors vous devez appeler exec sur la requête retournée
la source
Vous pouvez simplement utiliser la requête directement dans la fonction de suppression, donc:
la source
Vous pouvez toujours utiliser la fonction intégrée Mongoose:
la source
Mise à jour:
.remove()
est dépréciée mais cela fonctionne toujours pour les anciennes versionsla source
en utilisant la méthode remove () que vous pouvez supprimer.
la source
Cela a fonctionné pour moi, essayez simplement ceci:
la source
Model.remove
est déconseilléSelon la réponse de Samyak Jain, j'utilise Async Await
la source
J'aime vraiment ce modèle dans les applications asynchrones / attendez Express / Mongoose:
la source
la source