在MongoDb的Map函数中发出DateTime

时间:2011-02-07 12:58:38

标签: mongodb mapreduce

我的地图功能如下所示:

map = function()
{
   day = Date.UTC(this.TimeStamp.getFullYear(), this.TimeStamp.getMonth(), this.TimeStamp.getDate());
   emit({day : day, store_id : this.Store_Id}, {count : 1});
}

TimeStamp作为日期存储在数据库中,如下所示:

{ "TimeStamp" : "Mon Mar 01 2010 11:58:09 GMT+0000 (BST)", ...}

我需要将结果集合中的“day”存储为日期类型,但它存储的时间长(Epoch ticks)如下:

{ "_id" : { "day" : 1265414400000, "store_id" : 10}, "value" : { "count" : 7 } }

我尝试将发射器更改为类似的但没有帮助:

emit({day : {"$date" : day},...)

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

Date.utc将从纪元返回毫秒。因此,当您将数据放回数据库时,您可以使用例如:

 new Date(dateAsLong)

并将其存储为BSON日期格式。

早于mongo 1.7它将在你的哈希中显示为:

 "Mon Mar 01 2010 11:58:09 GMT+0000 (BST)"

1.7+它将显示为:

 ISODate("2010-03-01T11:58:09Z")