【发布时间】:2018-06-01 15:35:20
【问题描述】:
我有一个集合,其中单个文档如下所示:
{
"_id" : "123456789",
"created_timestamp" : "1522950461031"
}
如您所见,created_timestamp 日期以字符串形式存储为纪元值。 (很遗憾现在无法改变)
我需要编写一个查询来计算“经过的时间”,即current time - created_time 在任何给定时间点的所有文档。
这是我迄今为止尝试过的:
db.getCollection('testEntity').aggregate([
{$match : {"_id" : "123456789"}},
{$project: {_id : 1, created_timestamp: 1 ,
dateDifference: { $subtract: [ new Date() , new Date("$created_timestamp")]}}}])
但它不能正确计算差异。我认为在$subtract 中没有正确检测到该字段。有什么建议可以正确重写吗?
【问题讨论】:
-
dateDifference: { $subtract: [ new Date() , "$created_timestamp" ] }将减去两个 BSON 日期并返回它们之间的毫秒时间差。甚至还有关于返回 BSON 日期的进一步演示,该日期自 Group Result by 15 minute Time Interval 的纪元以来获得毫秒。但是您的字段是“字符串”而不是数字。目前 MongoDB 无法做到这一点,并且那里也有相关信息。 -
谢谢,我会考虑将我的字段转换为数字。
标签: mongodb aggregation-framework