民间, 我应该使用哪个来存储时间戳?我目前正在编写一个API服务,它将时间戳存储在MongoDB中。这些时间戳对我来说很重要,因为我需要在时间范围内查询数据库...即返回过去一小时或某些日期之间存储的所有文档。
IOS应用程序向我发送ISO8601
中包含以下时间戳的对象:
2014-10-09T18:00:48+01:00
如果我将这些直接存储到mongo中,文档看起来像:
{
"_id" : "2B6127C1-4E25-4271-B5A4-2CA9FEA4E1C3",
"timestamp" : "2014-10-09T18:00:48+01:00"
}
我可以很容易地将其插入到mongo中,但在我看来我应该做object.timestamp = moment(object.created).toDate();
哪会产生:
2014-10-09T18:00:48+01:00
并且mongo中的文档看起来像这样:
{
"_id" : "2B6127C1-4E25-4271-B5A4-2CA9FEA4E1C3",
"timestamp" : ISODate("2014-10-09T13:00:48.000-04:00")
}
我应该将它们转换为unix epoch格式吗?我不是非常精通ISO时间戳格式的差异......我想在第一个例子中,IOS给我发送了一个ISO8601
格式的时间戳。这是行业标准吗?
我已经阅读了几个主题,包括Best way to store date/time in mongodb,在我看来,我正在将我从ios获得的timestamp
转换为本机javascript日期对象。
当用户检索这些对象时,我是否应该将此存储对象转换为ISO8601
格式?
答案 0 :(得分:1)
以最原生的格式存储将允许您使用更多本机功能。 Mongo的查询或聚合API可以使用$gt
或$lte
与原生日期。哪个查询真的很方便。使用表示日期"
从1970年开始存储,或者以其他方式存储,以相同的方式工作,但由于ISODate
是Mongo识别的类型,所以只需使用它。
另外,moment.js
选择不错。这是一个有趣的库,可以向您的客户显示任何隐藏的数据存储方式(这是您想要的方式......)。