小编典典

MongoDB:更新一个字段上的每个文档

all

我有一个foo假设命名的集合。

每个实例foo都有一个名为 lastLookedAt 的字段,它是自纪元以来的 UNIX 时间戳。我希望能够通过 MongoDB
客户端并将所有现有文档(大约 20,000 个)的时间戳设置为当前时间戳。

处理这个问题的最佳方法是什么?


阅读 69

收藏
2022-05-24

共1个答案

小编典典

无论版本如何,对于您的示例,<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用于“ upsert ”参数
  • true用于“multi”参数(更新多条记录)
2022-05-24