mongodb - 使用mongodb在UTC中存储日期时如何处理时区问题?

我有一个 mongodb 集合,其中每个文档都有一些属性和一个 utc 时间戳。我需要从集合中提取数据并使用聚合框架,因为我使用集合中的数据在用户界面上显示一些图表。但是,我需要根据用户的时区进行聚合。假设我知道用户的时区(通过浏览器的请求或以其他方式传递),有没有办法使用聚合框架根据 [client's] 时区进行聚合?

最佳答案

除了 Matt Johnson 提到的 SERVER-6310 之外,另一种解决方法是使用 $project 运算符来添加或减去 UTC 时区,以将时间“转移”到正确的本地区。事实证明,您可以以毫秒为单位增加或减少时间。

例如,假设我有一个名为 orderTime 的日期字段。我想查询 EDT。那是距 UTC 的 -4 小时。那是 4 * 60 * 60 * 1000 毫秒。

因此,我将编写以下投影以获取本地时间的 day_ordered 以获取我的所有记录:

db.table.aggregate( 
    { $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
    { $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })

https://stackoverflow.com/questions/18287493/

相关文章:

c# - ORM 与 NoSQL API 是多余的吗?

mongodb - 在 mongodb 中存储图形

mongodb - Mongo 计算一组文档中每个值的出现次数

mongodb - Spring数据MongoDb : MappingMongoConverter

mongodb - 使用 $toLower 更新 MongoDB 集合

python - 为什么使用 update_one 更新记录会引发 ValueError?

mongodb - 如何在 MongoDB 中删除或删除集合?

ruby-on-rails - Heroku 的 Rails、Mongoid 和 Unicorn 配

mongodb - 为什么我不能使用 Homebrew 更新到最新的 MongoDB?

perl - 如何加快 MongoDB 插入/秒?