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

};

还有工作要做,但即使如此,您仍需要为每个文档生成“随机时间”

您必须迭代每个记录并设置它?(只是猜测)有什么原因导致此问题仍然存在?仍然存在,如“无接受答案”或“开放”中的问题?