Javascript 使用随机时间更新集合中的每个记录?
我有一个收集,我想更新一个日期在每个记录与随机时间在过去几个小时。我一直在使用以下更新:Javascript 使用随机时间更新集合中的每个记录?,javascript,mongodb,mongodb-query,Javascript,Mongodb,Mongodb Query,我有一个收集,我想更新一个日期在每个记录与随机时间在过去几个小时。我一直在使用以下更新: db.users.update( {}, { $set: { loggedIn: new Date((ISODate().getTime() - 1000*60*(ISODate().getTime()%300))) } }, false, true ); 但这会用相同的随机时间更新每
db.users.update(
{},
{
$set:
{
loggedIn: new Date((ISODate().getTime() - 1000*60*(ISODate().getTime()%300)))
}
},
false,
true
);
但这会用相同的随机时间更新每个记录。如何使
1000*60*(ISODate().getTime()%300
部分在每次更新时执行,而不是执行一次,然后用相同的值更新记录?没错。该操作是原子操作,此处的“随机日期值”将被计算一次,然后应用于多次更新的所有记录
因此,在任何编程实现中,您都需要迭代形式:
db.users.find({}).foreach(function(user) {
db.users.update({ _id: user._id },
{
$set:
{
loggedIn: new Date((ISODate().getTime() - 1000*60*(ISODate().getTime()%300)))
}
});
};
还有工作要做,但即使如此,您仍需要为每个文档生成“随机时间”您必须迭代每个记录并设置它?(只是猜测)有什么原因导致此问题仍然存在?仍然存在,如“无接受答案”或“开放”中的问题?