2016-02-10 2 views
2

У меня возникла проблема при использовании операции массового обновления в мангусте. Всякий раз, когда я передаю _id в состоянии соответствия. он не обновит результат и когда я изменил критерии своего состояния, кроме _id, он отлично работает. Есть идея об этом. Пожалуйста, помогите мне. Вот мой кодПочему операция массового обновления не работает, если я передаю _id в соответствии с условием использования Mongoose?

 var bulk = roleObj.collection.initializeUnorderedBulkOp(); 
    bulk.find({_id: '56b9ba46b51a3b2114b0b44e'}).update({$set: {name: 'bla bla'}}); 
    bulk.execute(function (err, data) { 
    }); 

ответ

0

Это потому, что вы вызываете объемные методы, лежащие в основе коллекции Монго, а не на методы мангуст API, которые автоматически обертывают Строка _id с для вас в ObjectID. Вы должны бросить строку ObjectID первым затем использовать его в массовом обновлении:

var mongoose = require('mongoose'), 
    id = mongoose.Types.ObjectId('56b9ba46b51a3b2114b0b44e'); 
    bulk = roleObj.collection.initializeUnorderedBulkOp(); 
bulk.find({_id: id}).update({$set: {name: 'bla bla'}}); 
bulk.execute(function (err, data) { ... }); 
+1

Спасибо @ chridam. Оно работает – Gurpinder

Смежные вопросы