2016-08-13 39 views
2

我目前使用python将数据预处理为JSON,并通过nodejs将我的数据插入到集合中:collection.insert(data, {safe:true}, function(err, result) {});我的查询也将使用nodejs执行。我应该使用什么格式在JSON中存储nodejs中使用的mongodb查询的时间戳?

我以前使用的蟒蛇datetime.datetime格式化我的时间戳,这是我的JSON是如何构成的:

[{ 
    "timestamp" : "2016-08-02 20:30:02", 
    "detail" : blah blah blah 
    },{ 
    "timestamp" : "2016-08-02 20:33:23", 
    "detail" : blah blah blah 
    }, 
    ... 
] 

我试图基于时间戳进行查询,并根据很多帖子像这样的Create an ISODate with pyMongo,我应该为我的查询使用ISODate。所以我的一个尝试是:

collection.findOne({ timestamp: new ISODate("2016-08-02T20:33:23.786Z")}) 

这一个说ISODate是未定义的。所以,在此基础上post我改变了我的查询:

collection.findOne({ timestamp: new Date("2016-08-02T20:33:23.786Z")}) 

这一个说没有找到记录。我应该如何将时间戳存储到JSON中? new Date("2016-08-02T20:33:23.786Z")是检索我的实例的正确方法吗?另外,当mongodb查询时间戳时,它会查看确切的小时和分钟吗?我想查找确切的年份,月份,日期,小时,分钟和秒,就像我的时间戳存储方式一样。

回答

1

以下answer表明最好的方法是使用Mongo原生的JavaScript Date(也可以通过ISODate构建)。挖掘到它进一步明确的内部值的BSON documentation

BSON日期是表示自Unix毫秒为单位的数量的64位整数(1970年1月1日)。这导致了过去和未来约2.9亿年的可表示日期范围。

所以简短的回答是:不管你用哪种语言存储它,只需存储64位整数毫秒,你就可以本机读取它。我希望这个值是用UTC写的和读的。

following answer还告诉你如何将你的python datetime对象转换为自epoch以来的毫秒数。

相关问题