Mongodb Map按日期减少一个月

时间:2013-12-11 22:32:16

标签: ruby-on-rails mongodb date mapreduce mongoid

我在Rails中使用mongoid并按日期将地图缩小为输出帖子。在本地,它按预期工作,但是当我使用Heroku / MongoLab部署它时,其中一个日期计数比它应该落后一个月。

图:

function() {
    emit(new Date(this._revisions.publish_date.getFullYear(), this._revisions.publish_date.getMonth(), 1), {count: 1});
}

减少

function(key, values) {
    var result = {count: 0}
    values.forEach(function(value) {
        result.count += value.count;
    });
    return result;
}

本地结果1月1日,7月2日正确 远程结果1月1日,2月6月

我知道JavaScript中有0个索引月,但我认为这不是问题,因为它在本地工作正常。这可能是一个时区问题,但不确定为什么会导致它在一个月后关闭。

更新

我将记录中的日期更改为7月2日而非7月1日,并按预期执行。不确定为什么7月1日是6月排放,而7月2日是7月排放​​。似乎是一个问题,一个月的1月1日的所有日期都会在上个月发出,为什么这只会发生在远程服务器而不是本地服务器上。

1 个答案:

答案 0 :(得分:0)

根本问题在于你在操作中使用Date的本地时间方法。一个时区的7月1日日期可以是6月30日在另一个时区。

解决方案是使用Date的UTC方法而不是本地方法,以便日期处理不受主机服务器时区的影响。