我想创建一个名为"orders4H"的mongodb视图,它总是从我们的"orders"集合中返回具有createdAt字段值的文档,该字段值为<=NOW-4小时。然后,任何使用"orders4H"视图作为收集源的工具都将始终获得最近4小时的最新订单数据。视图创建需要一个聚合管道。然而,我不知道如何制作一个在相对日期匹配美元的管道。
在mongodb 4.2中,他们添加了一个名为NOW的聚合系统变量,如果我能让它在查询文档中工作的话,它似乎就是可以使用的。我可以使用它来创建新字段,例如,如果我将timeNow:"$$NOW"放在$addFields阶段,我会得到一个具有当前日期时间的新字段。现在我想在查询评估中使用这个"$$Now"。
问题的简短版本-我如何编写一个$match管道阶段,该阶段将与文档中的日期时间字段进行服务器时间相对比较?
MongoDB票证意味着已经添加了这种支持。。。但我不知道如何在查询中使用$$NOW。有人知道怎么做吗?
以下是我找到的相关门票:
https://jira.mongodb.org/browse/SERVER-37713https://jira.mongodb.org/browse/SERVER-23656
在mongodb技术支持的帮助下,我能够获得一个与mongodb 4.2一起工作的$match阶段,以进行时间相关查询:
[
{ $match:
{ $expr:
{ $gt: [
"$_created_at",
{ $subtract: [ "$$NOW", 4 * 60 * 60 * 1000] } ]
}
}
}
]