Du kan använda $reduce
och $concatArrays
för att "sammanfoga" en inre "array av arrayer" i en enda lista och mät $add
de två resultaten tillsammans:
db.posts.aggregate([
{ "$match": { _id:ObjectId("5dbdacc28cffef0b94580dbd") } },
{ "$addFields": {
"totalBoth": {
"$add": [
{ "$size": "$comments" },
{ "$size": {
"$reduce": {
"input": "$comments.replies",
"initialValue": [],
"in": {
"$concatArrays": [ "$$value", "$$this" ]
}
}
}}
]
}
}}
])
Notera att en "array of arrays" är effekten av ett uttryck som $comments.replies
, så därav operationen att göra dessa till en enda array där du kan mäta alla element.