Estou tentando entender porque $dateadd
funciona com $expr
mas não sem:
Este código retorna o conjunto de resultados:
db.getCollection("CollectionName").aggregate(
[
{
"$sort" : {
"_id" : NumberInt(-1)
}
},
{"$match":
{"$expr":
{
$gte:
[ "$CreateDate",
{
$dateAdd:
{
startDate: ISODate(),
unit: "hour",
amount: -1
}
}
]
}
}
}
]);
Enquanto este não é (conjunto de resultados vazio):
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
}
}
}
}
}
]);
- Como escrevi no exemplo, substituir
$dateadd
por valor codificado também funciona. - A versão do MongoDB é 5.0.14