Với phiên bản MongoDB 3.2 và mới hơn, $unwind
toán tử hiện có một số tùy chọn, trong đó cụ thể là preserveNullAndEmptyArrays
tùy chọn sẽ giải quyết vấn đề này.
Nếu tùy chọn này được đặt thành true và nếu đường dẫn là rỗng, bị thiếu hoặc là một mảng trống, hãy $unwind
xuất ra tài liệu. Nếu sai, $unwind
không xuất ra tài liệu nếu đường dẫn rỗng, thiếu hoặc một mảng trống. Trong trường hợp của bạn, hãy đặt nó thành true:
db.collection.aggregate([
{ "$unwind": {
"path": "$solved",
"preserveNullAndEmptyArrays": true
} },
{ "$group": {
"_id": "$_id",
"login": { "$first": "$login" },
"solved": { "$sum": "$solved.points" }
} }
])