Com a versão MongoDB 3.2 e mais recente, o
$unwind
O operador agora tem algumas opções onde, em particular, o preserveNullAndEmptyArrays
opção vai resolver isso. Se esta opção for definida como verdadeira e se o caminho for nulo, ausente ou uma matriz vazia,
$unwind
emite o documento. Se for falso, $unwind
não gera um documento se o caminho for nulo, ausente ou uma matriz vazia. No seu caso, defina como true:db.collection.aggregate([
{ "$unwind": {
"path": "$solved",
"preserveNullAndEmptyArrays": true
} },
{ "$group": {
"_id": "$_id",
"login": { "$first": "$login" },
"solved": { "$sum": "$solved.points" }
} }
])