$ match на $ project-computed-field - PullRequest
       8

$ match на $ project-computed-field

0 голосов
/ 26 апреля 2018

У меня есть запрос агрегации, где $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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...