Sie können $reduce
verwenden
und $concatArrays
zu "verschmelzen" ein inneres "Array von Arrays" in eine einzelne Liste und messen Sie den $size
davon. Dann einfach $add
die beiden Ergebnisse zusammen:
db.posts.aggregate([
{ "$match": { _id:ObjectId("5dbdacc28cffef0b94580dbd") } },
{ "$addFields": {
"totalBoth": {
"$add": [
{ "$size": "$comments" },
{ "$size": {
"$reduce": {
"input": "$comments.replies",
"initialValue": [],
"in": {
"$concatArrays": [ "$$value", "$$this" ]
}
}
}}
]
}
}}
])
Beachten Sie, dass ein "Array von Arrays" die Auswirkung eines Ausdrucks wie $comments.replies
ist , daher die Operation, diese zu einem einzigen Array zu machen, in dem Sie alle Elemente messen können.