Проблема с вашим запросом возникает, когда вы делаете:
{$match:{CreatedAt:{$gte:"$DateFloor"}}}
Вы на самом деле проверяете документы, в которых CreatedAt
значение поля больше значения входной строки "$DateFloor"
, поэтому $match
не рассматривает "$DateFloor"
как другое поле в том же документе, а рассматривает его как строковое значение. Поэтому для сравнения двух полей одного и того же документа вам нужно использовать $gte
с $ expr (что позволит вам использовать выражения агрегации в языке запросов).
{
$match: {
{
$expr: {
$gte: ["$CreatedAt", "$DateFloor"];
}
}
}
}
Так что вы можете запутайтесь, когда я скажу aggregation expressions
и почему $gte
нужно заключить в $expr
- В вашем фактическом запросе $ gte относится к оператору сравнения в MongoDB, но в этом запросе $ gte относится к оператору конвейера агрегации, где оба технически делают то же самое, но это то, что необходимо для сравнения двух полей из одного документа.