在MongoDB中存储转换日期[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在MongoDB中存储转换日期[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我正在研究一个项目,因为它是第一个项目,我不知道Mongo将所有内容存储在UTC中,直到我注意到在第X-1 23:00:00而不是第X 00: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 docs看起来你不能https://docs.mongodb.com/manual/tutorial/model-time-data/

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

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

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

以上是关于在MongoDB中存储转换日期[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将代码片段存储在 mongodb 中?

转换以字符串格式存储的日期值并减去 mongodb 中的当前日期

(Python) 按日期查询,在 mongoDB 集合中存储为字符串

sql 日期转换代码片段 - Dato,120,konvertere

从R在mongodb中插入json日期对象

如何在Javascript中将日期转换为其他时区[重复]