У меня есть запрос агрегации, где $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), поскольку - я полагаю, - год поля вычисляется в запросе, а $match
может работать только с существующими ранее. поля. Короче говоря, что-то вроде этого не работает:
{
$project: {
year : {$year : { $add: [new Date(0), {$multiply: ["$timestampField", 1000 ]}]}},
...
{
$match: {
"year": {$gte: 2018},
...
Я не рассматриваю возможность добавления вычисляемого поля в схему сбора для использования $match
, кроме этого, я не нахожу документацию о том, как удовлетворить мой вариант использования.
Это выполнимо? Если так, что я пропускаю?
РЕДАКТИРОВАТЬ:
Образец-документ из коллекции:
{
"_id": {
"$oid": "5a27b4d4c14826880321c8e4"
},
"ope": "ptp",
"shopId": "121",
"ptst": 6,
"timestampField": 1512554442
}