ios和mongodb的时间戳选择,moment.js

时间:2014-10-13 15:49:52

标签: ios node.js time momentjs

民间,   我应该使用哪个来存储时间戳?我目前正在编写一个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格式?

1 个答案:

答案 0 :(得分:1)

以最原生的格式存储将允许您使用更多本机功能。 Mongo的查询或聚合API可以使用$gt$lte与原生日期。哪个查询真的很方便。使用表示日期"

的"字符串来完成这些类型的事情要困难得多

从1970年开始存储,或者以其他方式存储,以相同的方式工作,但由于ISODate是Mongo识别的类型,所以只需使用它。

另外,moment.js选择不错。这是一个有趣的库,可以向您的客户显示任何隐藏的数据存储方式(这是您想要的方式......)。