2017-04-06 46 views

回答

1

没有办法与updateMany方法来执行这种操作。然而,有效的解决方案是将findbulkWrite组合使用。

实施例(使用函数发生器和产率):

var coll = db.collection("users"); 
var Users = yield coll.find().toArray(); 
var bulkArray = []; 
Users.forEach(function* (d, i) { 
    bulkArray.push({ updateOne: { filter: { _id: mongodb.ObjectID(d._id) }, 
     update: { $set: { uname: 'user_' + i }}, upsert:true }); 
}); 
yield coll.bulkWrite(bulkArray, {ordered:true, w:1});