- 我有一个 mongoDB,其中包含日期字段
updated_at
. - 此字段可能有值,也可能没有值。
现在,我想运行 mongoDB
update
查询哪个:
- 应更新
updated_at < someDate
的所有文档 - 应更新
updated_at is not present
的所有文档.
在测试 JavaScript 中,我发现日期比较与 undefined
变量不会产生预期的结果。所以我才问这个问题。
最佳答案
假设您有如下文档:
db.col.save({});
db.col.save({ updated_at: null });
db.col.save({ updated_at: undefined });
db.col.save({ updated_at: ISODate("2018-05-29T00:00:00.000Z") });
db.col.save({ updated_at: ISODate("2018-06-02T00:00:00.000Z") });
假设您要更新文档1-4
,您可以使用以下更新:
db.col.update({
$or: [
{ updated_at: { $lt: ISODate("2018-06-01T00:00:00.000Z") } },
{ updated_at: { $not: { $type: 9 } } }
] },
{ $set: { updated_at: ISODate("2018-06-01T00:00:00.000Z") } },
{ multi: true })
它只是检查定义日期的 $lt
条件并使用 $type包含类型不是 Date
的所有文档。
关于javascript - mongo.db 更新可能有值或没有值的日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50589623/