Если Mongo $ lookup является левым внешним соединением, то почему оно исключает несовпадающие документы?

Название говорит само за себя. Почему, если документ не приводит ни к какому внешнему документу, соответствующему соответствующему полю, то почему он не включен в набор результатов конвейера?

Я тестирую новые агрегаторы в Mongo 3.2 и зашел так далеко, что выполнил поиск вложенных массивов, сначала развернув, а затем сгруппировав документы обратно. Все, что я оставил, это чтобы результаты включали все местные документы, которые не соответствовали$lookup критерий, который, как я думал, был стандартным определением «левого внешнего соединения».

Вот запрос:

db.users.aggregate([
    {
        $unwind: "$profile",
        $unwind: "$profile.universities"
    },
    {
        $lookup: {
            from: "universities",
            localField: "profile.universities._id",
            foreignField: "_id",
            as: "profile.universities"
        }
    },
    {
        $group: {
            _id: "$_id",
            universities: {
                $addToSet: "$profile.universities"
            }
        }
    }
]).pretty()

Так что если у меня естьuser который имеет пустойprofile.universities массив, то мне нужно, чтобы он был включен в набор результатов независимо от$lookup возвращаюсь, никаких совпадений, но это не так. Как я могу это сделать, и любая причина, почему Монго построил$lookup действовать таким образом?

Ответы на вопрос(1)

Ваш ответ на вопрос