如果我使用Mongoose在匹配条件下传递_id,为什么批量更新操作不起作用?

时间:2016-02-10 10:46:03

标签: mongodb mongoose

我在mongoose中使用批量更新操作时遇到问题。每当我在匹配条件下传递_id时。它不会更新结果,当我改变我的条件标准,除了_id,它工作正常。对此有任何想法。请帮我。这是我的代码

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

1 个答案:

答案 0 :(得分:2)

这是因为您正在调用基础mongo集合的批量方法,而不是在 ObjectID _id的mongoose API方法>。您需要首先将字符串转换为 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) { ... });