Vous pouvez utiliser $reduce
et $concatArrays
pour "fusionner" un "tableau de tableaux" interne en une seule liste et mesurez le $size
de ça. Puis simplement $add
les deux résultats ensemble :
db.posts.aggregate([
{ "$match": { _id:ObjectId("5dbdacc28cffef0b94580dbd") } },
{ "$addFields": {
"totalBoth": {
"$add": [
{ "$size": "$comments" },
{ "$size": {
"$reduce": {
"input": "$comments.replies",
"initialValue": [],
"in": {
"$concatArrays": [ "$$value", "$$this" ]
}
}
}}
]
}
}}
])
Notant qu'un "tableau de tableaux" est l'effet d'une expression comme $comments.replies
, donc d'où l'opération pour les transformer en un seul tableau où vous pouvez mesurer tous les éléments.