Tytuł mówi wszystko. Jak to się dzieje, jeśli dokument nie zawiera żadnego zgodnego dokumentu zewnętrznego zgodnego z pasującym polem, dlaczego więc nie jest uwzględniony w zestawie wyników potoku?
Testuję nowe agregatory w Mongo 3.2 i posunąłem się tak daleko, aby wykonać zagnieżdżone wyszukiwanie tablicy, najpierw odwijając, a następnie grupując dokumenty z powrotem. Zostało mi tylko to, że wyniki zawierają wszystkie lokalne dokumenty, które nie spełniały kryteriów $lookup
, co było według mnie standardową definicją "lewe sprzężenie zewnętrzne".
Oto zapytanie:
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()
Więc jeśli mam user
że ma pusty profile.universities
tablicę, potem muszę to być zawarte w zestawie wyników niezależnie od $lookup
powracającego jakiekolwiek mecze, ale to robi nie. Jak mogę to zrobić i jakikolwiek powód, dla którego Mongo skonstruował $lookup
, aby działał w ten sposób?
Niesamowite było to dokładnie problem. Dziękuję bardzo!! –