带索引的Node.js mongodb updateMany

有什么办法,以便我可以使用updateMany方法中的当前索引或文档编号或光标ID?

例如:

db.collection("users").updateMany({}, { $set: {"uname": "user_" + $index}});

这里$ index表示文档的当前数字或索引或序列。

我正在使用MongoDB的Node.JS驱动程序2.2

updateMany方法没有办法执行这种操作。 然而一个有效的解决scheme是结合使用find和bulkWrite 。

示例(使用函数发生器和产量):

 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});