我有一个foo假设命名的集合。
foo
每个实例foo都有一个名为 lastLookedAt 的字段,它是自纪元以来的 UNIX 时间戳。我希望能够通过 MongoDB 客户端并将所有现有文档(大约 20,000 个)的时间戳设置为当前时间戳。
处理这个问题的最佳方法是什么?
无论版本如何,对于您的示例,<update>都是:
<update>
{ $set: { lastLookedAt: Date.now() / 1000 } }
但是,根据您的 MongoDB 版本,查询看起来会有所不同。无论版本如何,关键是 空条件{}将匹配任何文档。在 Mongo shell 或任何 MongoDB 客户端中:
{}
$版本 >= 3.2:
db.foo.updateMany( {}, <update> )
3.2 > $版本 >= 2.2:
db.foo.update( {}, <update>, { multi: true } )
{multi: true}
$版本 < 2.2:
db.foo.update( {}, <update>, false, true )
false
true