2014-05-07 3 views
0

J'ai une collection avec quelques mauvaises données. Je voudrais supprimer en bloc ces données en fonction d'une requête. C'est facile dans le shell mongo car db.collection.remove() vous permet de spécifier l'option justOne. Y at-il un moyen de le faire dans le pilote node.js? findAndRemove semble supprimer seulement 1 document et n'a aucune option pour le faire en vrac?NodeJS bulk remove documents mongodb

db.collection(collection_name, function(err, collection){ 
    collection.findAndRemove({type: 'LUXURY'}, function(err, result){ 
    // result is only a single document 
    console.log(result._id.toString()); 
    }); 
}); 

Je sais une alternative à cela est de find() tous les documents qui satisfont ma requête et créer manuellement un BulkOp en utilisant initializeUnorderedBulkOp et le remplir par itérer sur les résultats de ma trouvaille, mais je pense qu'il devrait y avoir un moyen plus facile .

+0

Avez-vous déjà consulté mongoose? Son super complet et aurait la suppression que vous recherchez. Je l'ai utilisé sur plusieurs sites et c'est génial. http://mongoosejs.com/ –

+0

J'en avais entendu parler, mais je n'ai pas pensé à l'essayer. Je vais regarder dedans. Recommandez-vous de migrer tout mon code pour utiliser mongoose ou est-ce une pratique courante d'entrelacer le driver mongo avec mongoose? – Comart

+0

Le code testé est l'or. Je ne migrerais pas partout si son fonctionnement. Je commencerais à l'introduire dans de nouvelles fonctionnalités et à migrer dessus car cela a du sens mais pas comme une règle, d'autant plus que la logique/syntaxe est si similaire. J'aime vraiment Mongoose, je ne peux pas en dire assez et je l'utilise sur plusieurs projets. –

Répondre

0

Si vous utilisez un pilote natif-mongo-natif, je ne vois pas pourquoi vous n'utilisez pas le remove directement.

db.collection(collection_name, function(err, collection){ 
    collection.remove({type: 'LUXURY'}, function(err, result){ 
    // your code here. 
    }); 
}); 
Questions connexes