从 MongoDB 取回以 UTC 格式存储的文档
Get back documents from MongoDB stored in UTC format
我的文档的日期以 MongoDB 格式存储,格式为 UTC:2016-01-28T01:00:00Z
其中 Z 代表 UTC 时间。
我想做的是找到所有未过期的文档(date_stored_in_DB > 今天的日期)。但是我对这样做的正确方法感到困惑。
方法 1: 我应该先将今天的日期转换为 Z 格式(如上所示)并开始查看数据库吗?这样它就只是匹配字符串。
方法 2: 我是否应该从数据库中获取所有记录并将每个日期转换为可解析的日期格式(如 02/03/2016)并与今天的日期进行比较?我在这里考虑正则表达式,但我不确定
方法 3:您的建议?
我正在将 reactivemongo 与 scala & play 框架结合使用来完成这项工作。
最简单的方法是将今天的日期转换为 UTC:
val utcString = new DateTime(now).withZone(DateTimeZone.UTC)
您可以将此值传递给 $gt
MongoDB 查询以检索未过期的记录。
如果您将日期存储为 ISODate 类型,那么您可以像这样查询它:
db.yourcollection.find({"date" : { $gte : new ISODate("2016-01-28T01:00:00Z") }});
$gte 运算符查询大于或等于。有关其他信息,请参阅 this。
查询所有记录然后过滤掉它们通常不是一个好主意。
我的文档的日期以 MongoDB 格式存储,格式为 UTC:2016-01-28T01:00:00Z
其中 Z 代表 UTC 时间。
我想做的是找到所有未过期的文档(date_stored_in_DB > 今天的日期)。但是我对这样做的正确方法感到困惑。
方法 1: 我应该先将今天的日期转换为 Z 格式(如上所示)并开始查看数据库吗?这样它就只是匹配字符串。
方法 2: 我是否应该从数据库中获取所有记录并将每个日期转换为可解析的日期格式(如 02/03/2016)并与今天的日期进行比较?我在这里考虑正则表达式,但我不确定
方法 3:您的建议?
我正在将 reactivemongo 与 scala & play 框架结合使用来完成这项工作。
最简单的方法是将今天的日期转换为 UTC:
val utcString = new DateTime(now).withZone(DateTimeZone.UTC)
您可以将此值传递给 $gt
MongoDB 查询以检索未过期的记录。
如果您将日期存储为 ISODate 类型,那么您可以像这样查询它:
db.yourcollection.find({"date" : { $gte : new ISODate("2016-01-28T01:00:00Z") }});
$gte 运算符查询大于或等于。有关其他信息,请参阅 this。
查询所有记录然后过滤掉它们通常不是一个好主意。