Database

db={"users":[{"firstName":"David","lastName":"Mueller","messages":[1,2]},{"firstName":"Mia","lastName":"Davidson","messages":[3,4,5]}],"messages":[{"_id":1,"text":"hello","type":"PERSONAL"},{"_id":2,"text":"test","type":"DIRECT"},{"_id":3,"text":"hello world","type":"DIRECT"},{"_id":4,"text":":-)","type":"PERSONAL"},{"_id":5,"text":"hi there","type":"DIRECT"}]}

Query

db.users.aggregate([{"$lookup":{"from":"messages","localField":"messages","foreignField":"_id","as":"messages","pipeline":[{"$group":{"_id":"$type","count":{"$sum":1}}}]}}])

Result