2017-04-06 3 views

Antwort

1

Es verwenden es keine Möglichkeit, mit updateMany Methode, um diese Art von Operationen auszuführen. Eine effiziente Lösung besteht jedoch darin, find und bulkWrite in Kombination zu verwenden.

Beispiel (unter Verwendung von Funktionsgeneratoren und Ausbeute):

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