使用pymongo将long转换为ISODate

时间:2014-12-17 08:45:05

标签: json pymongo isodate

我有一个带有日期字段的集合。该集合的示例json格式如下:

{
"processID" : "1410449146441-3-8863e29e0055",
"department" : "ABC",
"price" : 9.99,
"unitSold" : 19,
"date" : 1410449146442
},
{
"processID" : "14104491tf-alhb-8863e29e0055",
"department" : "XYZ",
"price" : 19.99,
"unitSold" : 21,
"date" : 1410985985985  
}

我需要将此日期字段转换为ISOdate格式,以便我可以从中提取年,月和日。我需要在pymongo中做到这一点。 我尝试将其作为datetime.datetime.fromtimestamp({"$divide": ["$date", 1e3]}),但得到了错误" TypeError:需要浮点数"

请你告诉我在pymongo中做到这一点的好方法

1 个答案:

答案 0 :(得分:0)

您收到错误消息是因为fromtimestamp是Python函数,而不是Mongo DB函数。 .fromtimestamp期望float而不是您提供了一个dict。 使用datetime模块在遍历游标时进行转换:

import datetime
for x in cursor:
    timestamp = datetime.datetime.fromtimestamp(x.get("date")/1000)
    # timestamp = object of type datetime.

注意::如果不将long值除以1000,则会出现“年份不在范围内”的错误。