我正在尝试更新MongoDB集合中每个Document的字段。
我添加了Mongo shell中的字段,但我想将每个字段的值更改为随机数。
User.find({}, function(err, items){
if (err){
consele.log('err');
consele.log(err);
}
items.forEach(function(item){
var time = (Math.floor(Math.random() * (1474893715201 - 1474800000000) + 1474800000000));
item.update({}, {$set:{"lastLogin": time}}, false, true);
});
});
如果我在.forEach循环中的console.log(item),我会按照我的期望得到集合中的每个文档,所以到那里的所有内容似乎都有效。
谁能看到我出错的地方?
谢谢大家!
答案 0 :(得分:0)
Api调用是异步的,您必须将它包装在promise或async库中以完成构建更改。
或者您也可以通过一次通话中的mongo进行批量查找和更新:https://docs.mongodb.com/manual/reference/method/Bulk.find.update/
var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } );
bulk.find( { item: null } ).update( { $set: { item: "TBD" } } );
bulk.execute();
答案 1 :(得分:0)
为什么不喜欢
User.find({}, function(err, items){
if (err){
consele.log('err');
consele.log(err);
}
items.forEach(function(item){
var time = (Math.floor(Math.random() * (1474893715201 - 1474800000000) + 1474800000000));
item.lastLogin = time;
User.save(item); // or item.save() based on driver you are using
});
});