W wersji MongoDB 3.2 i nowszych $unwind
operator ma teraz kilka opcji, w których w szczególności preserveNullAndEmptyArrays
opcja rozwiąże ten problem.
Jeśli ta opcja jest ustawiona na true i jeśli ścieżka jest pusta, brakuje lub jest pustą tablicą, $unwind
wyprowadza dokument. Jeśli fałsz, $unwind
nie wyświetla dokumentu, jeśli ścieżka jest null, brakująca lub pusta tablica. W twoim przypadku ustaw to na true:
db.collection.aggregate([
{ "$unwind": {
"path": "$solved",
"preserveNullAndEmptyArrays": true
} },
{ "$group": {
"_id": "$_id",
"login": { "$first": "$login" },
"solved": { "$sum": "$solved.points" }
} }
])