我可以从游标遍历函数内部更新 mongo 文档吗?

Rad*_*asu 6 mongodb

是否可以从游标遍历函数内部更新 mongo 文档(类似于 mongoose)?

就像是:

db.collection.find({email:"xxx@test.com"}).forEach(doc => {
  doc.newProp = 'newValue';
  doc.save();
});
Run Code Online (Sandbox Code Playgroud)

Rad*_*asu 6

看起来可以这样完成:

db.collection.find({email:"xxx@test.com"}).forEach(doc => {
  doc.newProp = 'newValue';
  db.collection.save(doc);
});
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试使用以下查询,它应该可以解决您的问题:-

db.collection.find({email:"xxx@test.com"}).forEach(doc => {
db.collection.update({_id: doc._id},{$set:{"newProp":"value"}});
});
Run Code Online (Sandbox Code Playgroud)

$set将更新现有值,否则如果文档中不存在,它将添加具有给定值的新字段。