Агрегат и $ lookup by $ project field - PullRequest
1 голос
/ 26 июня 2019

Я пытаюсь собрать в своей коллекции пользователей и $project из полей, которые мне нужны.Затем я хочу установить переменные let в $lookup, чтобы иметь возможность использовать переменную для поиска подходящих документов.

Я хочу сделать это так, потому что у меня будет много $lookups переменных.

Однако я не могу заставить это работать правильно.Что я делаю не так с переменными?

$project: {
        _id: 1,
        name: 1,
        goal: 1
    }
},
{
    $lookup: {
        from: "goals",
        let: { user: "$_id" },
        pipeline: [
            {
                $match: {
                    "user": "$$user"
                }
            },
            { $project: { _id: 0, leads: 0 } },
        ],
        as: "goal"
    }
},
{
    $project: {
        _id: 1,
        name: 1,
        goal: 1
    }
},

1 Ответ

1 голос
/ 26 июня 2019

Вам нужно использовать $expr, чтобы использовать имя переменной внутри стадии $match.

{ $match: { $expr: { $eq: ['$user', '$$user'] }}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...