在MongoDB中存储转换后的日期



我正在做一个项目,因为它是第一个项目,我不知道 Mongo 以 UTC 存储所有内容,直到我注意到生日存储在第 X-1 天 23:00:00 而不是第 X 天 00:00 应有的时间。我尝试使用时刻并在存储之前将日期转换为我的时区,但 Mongo 忽略了它。

const bdate = moment.tz(body.birthdate, "YYYY-MM-DD", "Europe/Lisbon").format();

在控制台上,它显示:1998-10-20T00:00:00+01:00

在数据库上,它显示:"1998-10-19T23:00:00.000Z"

我该怎么做才能将数据存储在我的本地时区或强制MongoDB显示本地时区日期?

我已经看到使用$project转换为本地时区的解决方案,但我想获取整个转换日期,而不仅仅是小时/天/月。

从 mongo 文档中似乎您无法 https://docs.mongodb.com/manual/tutorial/model-time-data/

他们建议您将其转换为应用程序端。

我认为您应该考虑如何使用日期以及如何为集合编制索引。

例如,如果您的目标是在用户生日当天的特定时间向用户发送通知"生日快乐",则可能需要将该时区偏移烘焙到您在 Mongo 中存储的内容中。这样,您就可以在出生日期字段上编制索引,并通过查询(如db.users.find({ birthdate: )(来获取需要通知的所有用户。显然,如果用户物理移动时区,这将中断(如果他们移动,您必须更新它(。或者,您可以将他们的生日+本地时区存储为单独的字段,但这会使查询变得更加复杂。

最新更新