我应该使用什么格式在JSON中存储nodejs中使用的mongodb查询的时间戳记?

我目前正在使用python预处理我的数据到JSON,并通过nodejs插入我的数据到集合: collection.insert(data, {safe:true}, function(err, result) {}); 我的查询也将使用nodejs执行。

我以前使用python 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 }, ... ] 

我试图查询基于时间戳,并根据很多这样的职位创build与pyMongo的ISODate ,我应该使用ISODate我的查询。 所以我的一个尝试是:

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

这个说ISODate是未定义的。 所以基于这个职位,我改变了我的查询:

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

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

以下答案build议最好的方法是使用Mongo原生的JavaScript Date (也可以通过ISODate )。 深入BSON文件进一步阐明了内部价值:

BSON Date是一个64位整数,表示自Unix时代(1970年1月1日)以来的毫秒数。 这导致了过去和未来约2.9亿年的可表示的date范围。

所以简单的答案是:无论您使用哪种语言存储,只需存储64位整数毫秒,您就可以本机读取。 我希望这个值是用UTC写的和读的。

下面的答案也告诉你如何将你的Python datetime对象转换为毫秒以来的纪元。