我有一个聚合查询,其中$project
从时间戳中提取年份,如下所示:
{
$project: {
year : {$year : { $add: [new Date(0), {$multiply: ["$timestampField", 1000 ]}]}},
...
我希望以这样的方式使用$gte
运算符来过滤输出结果,但是当我在年份字段上应用$gte
时结果仍然有变化:
{
$project: {
year : {$gte: [{$year : { $add: [new Date(0), {$multiply: ["$timestampField", 1000 ]}]}}, 2018]},
...
我自然尝试在$gte
上使用$match
,但输出结果为[](void),因为 - 我相信 - 字段年在查询中计算并{{1} }只能在预先存在的字段上运行。简而言之,这样的事情不起作用:
$match
我不打算将计算字段添加到集合模式以利用{
$project: {
year : {$year : { $add: [new Date(0), {$multiply: ["$timestampField", 1000 ]}]}},
...
{
$match: {
"year": {$gte: 2018},
...
,除此之外,我似乎找不到任何关于如何满足我的用例的文档。
可行吗?如果是这样,我错过了什么?
编辑: 来自集合的样本文档:
$match