MongoDB上基于数据的MapReduce问题

时间:2014-08-01 11:56:50

标签: mongodb timezone timestamp

我在MongoDB中使用MapReduce在日常级别进行聚合。在地图代码中,我有以下代码段来获取一年中的某一天:

var day = Date.UTC(this.time.getFullYear(), this.time.getMonth(), this.time.getDate(), 1, 0, 0);

在大多数情况下,它运作良好。但是,显然存在时区问题,迫使时间戳移动到上一个日期。例如,从该查询的结果中获得的文档:

{'time' : {'$gte' : new Date(2014, 0, 1, 0), '$lt' : new Date(2014, 0, 1, 9)}}

最终成为2013-12-31 17:00:00.000Z以及被查询的人:

{'time' : {'$gte' : new Date(2014, 0, 1, 9), '$lt' : new Date(2014, 0, 1, 23)}}

最终成为2014-01-01 17:00:00.000Z。我该怎么控制呢?

1 个答案:

答案 0 :(得分:0)

要确定如何构建日期。 Date.UTC给出自1970年1月1日以来的毫秒数。Date构造函数根据您的时区本地系统设置返回Date对象。这是根本问题。代码中有一点太多让我无法填写正确的陈述,但你应该能够做到。