Puoi utilizzare $reduce
e $concatArrays
per "unire" un "array di array" interno in un unico elenco e misurare il $size
di quella. Quindi semplicemente $add
i due risultati insieme:
db.posts.aggregate([
{ "$match": { _id:ObjectId("5dbdacc28cffef0b94580dbd") } },
{ "$addFields": {
"totalBoth": {
"$add": [
{ "$size": "$comments" },
{ "$size": {
"$reduce": {
"input": "$comments.replies",
"initialValue": [],
"in": {
"$concatArrays": [ "$$value", "$$this" ]
}
}
}}
]
}
}}
])
Notare che una "matrice di array" è l'effetto di un'espressione come $comments.replies
, quindi da qui l'operazione per trasformarli in un unico array in cui puoi misurare tutti gli elementi.