Database
db={User:[{"_id":"user1","catalogId":"catalog1","name":"u1","info":"User info 1"},{"_id":"user2","catalogId":"catalog2","name":"u2","info":"User info 2"},{"_id":"user3","catalogId":"catalog3","name":"u3","info":"User info 3"}],Catalog:[{"_id":"catalog1","userId":"user1","exist":true},{"_id":"catalog2","userId":"user1","exist":true},{"_id":"catalog3","userId":"user2","exist":true},{"_id":"catalog4","userId":"user3","exist":false}],Item:[{"_id":"item1","catalogId":"catalog1","userId":"user1"},{"_id":"item2","catalogId":"catalog1","userId":"user1"},{"_id":"item3","catalogId":"catalog3","userId":"user2"},{"_id":"item4","catalogId":"catalog4","userId":"user3"},{"_id":"item5","catalogId":"catalog4","userId":"user3"}]}
Query
db.User.aggregate([{"$lookup":{"from":"Catalog","localField":"_id","foreignField":"userId","as":"catalogs"}},{"$lookup":{"from":"Item","localField":"_id","foreignField":"userId","as":"items"}},{"$project":{"_id":0,"user":{"_id":"_id","catalogId":"catalogId","name":"name","info":"info"},"countOfCatalogs":{"$size":"$catalogs"},"countOfItems":{"$size":"$items"}}}])