Você pode usar
$reduce
e $concatArrays
para "mesclar" uma "matriz de matrizes" interna em uma única lista e meça o $size
por essa. Em seguida, basta $add
os dois resultados juntos:db.posts.aggregate([
{ "$match": { _id:ObjectId("5dbdacc28cffef0b94580dbd") } },
{ "$addFields": {
"totalBoth": {
"$add": [
{ "$size": "$comments" },
{ "$size": {
"$reduce": {
"input": "$comments.replies",
"initialValue": [],
"in": {
"$concatArrays": [ "$$value", "$$this" ]
}
}
}}
]
}
}}
])
Observando que um "array de arrays" é o efeito de uma expressão como
$comments.replies
, daí a operação para transformá-los em um único array onde você pode medir todos os elementos.