Node.js mongodb updateMany with index

时间:2017-04-06 12:32:10

标签: node.js mongodb

有没有办法可以在updateMany方法中使用当前索引或文档编号或游标ID?

例如:

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

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

我正在使用MongoDB Node.JS Driver 2.2

1 个答案:

答案 0 :(得分:1)

使用updateMany方法无法执行此类操作。但是,有效的解决方案是组合使用findbulkWrite

示例(使用函数生成器和yield):

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