J'essaie d'utiliser une suppression groupée sur les résultats d'une requête agrégée mongoose.Suppression en bloc de documents de l'agrégat
var bulk = Collection.collection.initializeUnorderedBulkOp();
var cursor = Collection.aggregate(query).cursor({batchSize: 1000}).exec();
cursor.each(function(error, doc){
if(doc){
console.log(doc);
bulk.find({_id : doc._id}).removeOne();
}
});
if(bulk.length > 0) {
bulk.execute(function(error){
if(error){
console.error(error);
callback(error);
}else{
console.log(bulk.length + " documents deleted");
callback(null);
}
});
} else {
console.log("no documents to delete");
callback(null);
}
Il en résulte des « aucun document à supprimer » en cours d'impression avant que les résultats de l'ensemble de la chaque boucle. Normalement je m'attendrais à ce qu'il y ait une fonction de rappel pour une opération de base de données. Je l'ai essayé d'ajouter une fonction de rappel aux params de exec, mais la fonction ne Reçoit:
var cursor = Collection.aggregate(query).cursor({batchSize: 1000}).exec(function(error, result){
console.log(error);
console.log(result);
callback();
});
Je voudrais également exécuter le vrac après une période de temps car il peut planter l'application, car il manque de mémoire. Disons après toutes les 5000k commandes. – Azarus