В названии говорится все. Почему, если документ не приводит к соответствующему внешнему документу в соответствии с его полем соответствия, то почему он не включен в результирующий набор конвейера?
Я тестирую новые агрегаторы в 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
, чтобы работать таким образом?
Удивительно, что это именно вопрос. Огромное спасибо!! –