mongodb agrega várias matrizes

Estou usando a versão v3.4 do MongoDB. Eu tenho umdocuments os dados de coleta e amostra são assim:

{
    "mlVoters" : [ 
        {"email" : "[email protected]", "isApproved" : false}
    ],
    "egVoters" : [ 
        {"email" : "[email protected]", "isApproved" : false}, 
        {"email" : "[email protected]", "isApproved" : true}
    ]
},{
    "mlVoters" : [ 
        {"email" : "[email protected]", "isApproved" : false}, 
        {"email" : "[email protected]", "isApproved" : true}
    ],
    "egVoters" : [ 
        {"email" : "[email protected]", "isApproved" : true}
    ]
}

Agora, se eu quiser a contagem de endereços de e-mail distintos para mlVoters:

db.documents.aggregate([
  {$project: { mlVoters: 1 } },
  {$unwind: "$mlVoters" },
  {$group: { _id: "$mlVoters.email", mlCount: { $sum: 1 } }},
  {$project: { _id: 0, email: "$_id", mlCount: 1 } },
  {$sort: { mlCount: -1 } }
])

O resultado da consulta é:

{"mlCount" : 2.0,"email" : "[email protected]"}
{"mlCount" : 1.0,"email" : "[email protected]"}

E se eu quiser a contagem de endereços de e-mail distintos para egVoters, faço o mesmo para o campo egVoters. E o resultado dessa consulta seria:

{"egCount" : 1.0,"email" : "[email protected]"}
{"egCount" : 1.0,"email" : "[email protected]"}
{"egCount" : 1.0,"email" : "[email protected]"}

Então, quero combinar essas duas agregações e obter o resultado da seguinte maneira (classificado por totalCount):

{"email" : "[email protected]", "mlCount" : 2, "egCount" : 1, "totalCount":3}
{"email" : "[email protected]", "mlCount" : 1, "egCount" : 1, "totalCount":2}
{"email" : "[email protected]", "mlCount" : 0, "egCount" : 1, "totalCount":1}

Como posso fazer isso? Como deve ser a consulta? Obrigado

questionAnswers(1)

yourAnswerToTheQuestion