代码之家  ›  专栏  ›  技术社区  ›  tarunkumar

MongoDB-存储不带时区的日期

  •  7
  • tarunkumar  · 技术社区  · 8 年前

    我们有一个简单的应用程序,其中所有用户都位于同一时区;因此,我们对在mongodate对象中存储时区信息不感兴趣。

    之所以采取如此极端的步骤,是因为我们有多个微服务,使用由不同开发人员管理的公共数据库。它们都需要在查询中显式设置时区相关内容;忘记相同的结果会导致数据集无效。

    Mongo Data Types

    不支持存储没有时区的日期。

    只想知道,这是他们在mongo中表示不带时区的日期的任何替代方法,我们仍然可以利用mongo数据库查询基于日期的语法,如日期范围、日期等。

    同时,DBA可以方便地读取和管理记录。

    2 回复  |  直到 8 年前
        1
  •  2
  •   Community CDub    4 年前

    https://stackoverflow.com/a/6776273/6105830

    您可以使用两种类型的长表示法(毫秒或格式yyyyMMddHHmmss)。这些是不存储时区并且仍然能够进行范围查询的唯一方法。

    很遗憾,您丢失了一些聚合属性。但是你可以做一些事情,比如保留两个表示,并在适当的时候使用它们。

    更新:

    不要像我之前说的那样存储日期。您将失去MongoDB的许多功能,也很难在日期字段上执行主要运算符。

    较新版本的MongoDB有操作员处理时区,这应该足以处理ISOTime格式。我的应用程序使用了我自己的建议来存储日期。现在我必须让我的用户选择他们的时区(公司已经发展壮大,我们需要扩展到其他国家)。我们正在努力改变所有模型,使其使用时间戳而不是标准化的日期格式。 有关更多信息,请访问链接: https://docs.mongodb.com/manual/reference/method/Date/

    链接如下: https://developer.mongodb.com/community/forums/

        2
  •  0
  •   Al Cher    6 年前

    您可以考虑将所有日期存储在UTC中,并以UTC呈现给用户,这样您就不会遇到客户端JavaScript、服务器或MongoDB静默转换的问题,从而避免混淆。 这里是 MDN link 关于这个主题。