MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Opération de mise à jour en masse de Mongoose

Vous pouvez le faire, mais le problème est que lors de l'accès à l'objet de collection sous-jacent à partir du pilote de base, les mêmes précautions ne sont pas prises comme avec les méthodes de modèle de mangouste implémentées.

Toutes les méthodes de modèle enveloppent les méthodes sous-jacentes avec d'autres fonctionnalités, mais la plus courante consiste à s'assurer qu'une connexion à la base de données est ouverte avant d'essayer d'accéder à la méthode. Cela garantit qu'un Db instance est présente et une Collection() l'objet peut être obtenu

Une fois que vous utilisez le .collection accesseur sur le modèle, alors vous le faites tout seul :

mongoose.connection.on('open',function(err,conn) {

   // now it's safe to use

   // { .. } Other code
   var bulk = Person.collection.initializeOrderedBulkOp();
   bulk.find(query).update(update);
   bulk.execute(callback)

});

Ou une autre méthode qui garantit essentiellement que la connexion a bien été établie.

En ce qui concerne la prise en charge native des méthodes de l'API Bulk sans plonger dans le niveau de pilote sous-jacent, oui, cela est en cours d'élaboration à l'heure actuelle. Mais vous pouvez toujours l'implémenter vous-même et cela ne cassera pas le code tant que vous vous connectez à une instance de serveur MongoDB 2.6 ou supérieure.