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 disques sont toujours là.
Quelqu'un peut-il réparer?
Si vous ne souhaitez pas itérer, essayez FBFriendModel.find({ id:333 }).remove( callback );
ou FBFriendModel.find({ id:333 }).remove().exec();
mongoose.model.find
renvoie une requête comportant une fonction remove
.
UPDATE: version Mongoose (5.5.3)
remove () est obsolète et vous pouvez utiliser deleteOne (), deleteMany () ou bulkWrite () à la place.
À partir de "mongoose": ">=2.7.1"
, vous pouvez supprimer le document directement avec la méthode .remove()
plutôt que de rechercher le document, puis de le supprimer, ce qui me semble plus efficace et plus facile à gérer.
Voir exemple:
Model.remove({ _id: req.body.id }, function(err) {
if (!err) {
message.type = 'notification!';
}
else {
message.type = 'error';
}
});
UPDATE:
À partir de mongoose 3.8.1
, plusieurs méthodes vous permettent de supprimer directement un document, par exemple:
remove
findByIdAndRemove
findOneAndRemove
Reportez-vous à docs de l'API Mongoose pour plus d'informations.
docs
est un tableau de documents. il n'a donc pas de méthode mongooseModel.remove()
.
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
au lieu de find
.
Ceci est pour moi le meilleur à partir de la version 3.8.1:
MyModel.findOneAndRemove({field: 'newValue'}, function(err){...});
Et cela ne nécessite qu'un seul appel à la base de données. Utilisez ceci étant donné que vous n'effectuez aucune remove
action avant la recherche et la suppression.
Il suffit de faire
FBFriendModel.remove().exec();
mongoose.model.find()
renvoie un objet de requête qui possède également une fonction remove()
.
Vous pouvez également utiliser mongoose.model.findOne()
si vous souhaitez supprimer un seul document.
Sinon, vous pouvez également suivre l’approche traditionnelle en récupérant le document, puis en le supprimant.
yourModelObj.findById(id, function (err, doc) {
if (err) {
// handle error
}
doc.remove(callback); //Removes the document
})
Vous trouverez ci-dessous différentes manières d'objet model
pour supprimer les documents:
yourModelObj.findOneAndRemove(conditions, options, callback)
yourModelObj.findByIdAndRemove(id, options, callback)
yourModelObj.remove(conditions, callback);
var query = Comment.remove({ _id: id });
query.exec();
Faites attention avec findOne et supprimez!
User.findOne({name: 'Alice'}).remove().exec();
Le code ci-dessus supprime TOUS les utilisateurs nommés 'Alice' au lieu de le premier seulement.
Au fait, je préfère enlever les documents comme celui-ci:
User.remove({...}).exec();
Ou fournissez un rappel et omettez le exec ()
User.remove({...}, callback);
Pour généraliser, vous pouvez utiliser:
SomeModel.find( $where, function(err,docs){
if (err) return console.log(err);
if (!docs || !Array.isArray(docs) || docs.length === 0)
return console.log('no docs found');
docs.forEach( function (doc) {
doc.remove();
});
});
Un autre moyen d'y parvenir est:
SomeModel.collection.remove( function (err) {
if (err) throw err;
// collection is now empty but not deleted
});
remove()
est obsolète. Utilisez deleteOne()
, deleteMany()
ou bulkWrite()
.
Le code que j'utilise
TeleBot.deleteMany({chatID: chatID}, function (err, _) {
if (err) {
return console.log(err);
}
});
model.remove({title:'danish'}, function(err){
if(err) throw err;
});
Réf.: http://mongoosejs.com/docs/api.html#model_Model.remove
Si vous recherchez un seul objet à supprimer, vous pouvez utiliser
Person.findOne({_id: req.params.id}, function (error, person){
console.log("This object will get deleted " + person);
person.remove();
});
Dans cet exemple, Mongoose supprimera en fonction de la correspondance req.params.id.
.remove()
fonctionne comme .find()
:
MyModel.remove({search: criteria}, function() {
// removed.
});
Je préfère la notation de promesse, où vous avez besoin, par exemple,.
Model.findOneAndRemove({_id:id})
.then( doc => .... )
Pour retirer un document, je préfère utiliser Model.remove(conditions, [callback])
Veuillez vous reporter à la documentation de l'API pour la suppression: -
http://mongoosejs.com/docs/api.html#model_Model.remove
Pour ce cas, le code sera: -
FBFriendModel.remove({ id : 333 }, function(err, callback){
console.log(‘Do Stuff’);
})
Si vous souhaitez supprimer des documents sans attendre une réponse de MongoDB, ne passez pas de rappel, vous devez appeler exec sur la requête renvoyée.
var removeQuery = FBFriendModel.remove({id : 333 });
removeQuery.exec();
Vous pouvez simplement utiliser la requête directement dans la fonction remove, donc:
FBFriendModel.remove({ id: 333}, function(err){});
Vous pouvez toujours utiliser la fonction intégrée Mongoose:
var id = req.params.friendId; //here you pass the id
FBFriendModel
.findByIdAndRemove(id)
.exec()
.then(function(doc) {
return doc;
}).catch(function(error) {
throw error;
});
Mise à jour: .remove()
est amorti, mais cela fonctionne toujours pour les anciennes versions.
YourSchema.remove({
foo: req.params.foo
}, function(err, _) {
if (err) return res.send(err)
res.json({
message: `deleted ${ req.params.foo }`
})
});
en utilisant remove () méthode que vous pouvez en mesure de supprimer.
getLogout(data){
return this.sessionModel
.remove({session_id: data.sid})
.exec()
.then(data =>{
return "signup successfully"
})
}
Cela a fonctionné pour moi, essayez ceci:
const id = req.params.id;
YourSchema
.remove({_id: id})
.exec()
.then(result => {
res.status(200).json({
message: 'deleted',
request: {
type: 'POST',
url: 'http://localhost:3000/yourroutes/'
}
})
})
.catch(err => {
res.status(500).json({
error: err
})
});
db.collection.remove(<query>,
{
justOne: <boolean>,
writeConcern: <document>
})