U kunt $reduce
gebruiken
en $concatArrays
om "samen te voegen" een innerlijke "array van arrays" in een enkele lijst en meet de $size
van dat. Dan gewoon $add
de twee resultaten samen:
db.posts.aggregate([
{ "$match": { _id:ObjectId("5dbdacc28cffef0b94580dbd") } },
{ "$addFields": {
"totalBoth": {
"$add": [
{ "$size": "$comments" },
{ "$size": {
"$reduce": {
"input": "$comments.replies",
"initialValue": [],
"in": {
"$concatArrays": [ "$$value", "$$this" ]
}
}
}}
]
}
}}
])
Merk op dat een "array of arrays" het effect is van een uitdrukking als $comments.replies
, dus vandaar de operatie om deze in een enkele array te maken waar je alle elementen kunt meten.