我试图理解为什么$dateadd
可以使用$expr
但不能不使用:
此代码返回结果集:
db.getCollection("CollectionName").aggregate(
[
{
"$sort" : {
"_id" : NumberInt(-1)
}
},
{"$match":
{"$expr":
{
$gte:
[ "$CreateDate",
{
$dateAdd:
{
startDate: ISODate(),
unit: "hour",
amount: -1
}
}
]
}
}
}
]);
虽然这不是(空结果集):
db.getCollection("CollectionName").aggregate(
[
{
"$sort" : {
"_id" : NumberInt(-1)
}
},
{"$match":
{"CreateDate": {
//"$gte" : ISODate("2023-07-04T12:25:00.000+0000") --works also
"$gte" : {$dateAdd:
{
startDate: ISODate(),
unit: "hour",
amount: -1
}
}
}
}
}
]);
- 正如我在示例中所写,
$dateadd
用硬编码值替换也可以。 - MongoDB版本是5.0.14
查看$match
$dateAdd
和 等函数$dateSubtract
是聚合表达式