Database
[{username:"jack",events:[{eventType:"party",createdAt:"2022-01-23T10:26:11.214Z",visitorInfo:{visitorId:"87654321-0ebb-4238-8bf7-87654321"}},{eventType:"party",createdAt:"2022-01-30T10:26:11.214Z",visitorInfo:{visitorId:"87654321-0ebb-4238-8bf7-87654321"}},{eventType:"party",createdAt:"2022-01-29T10:26:11.214Z",visitorInfo:{visitorId:"12345678-0ebb-4238-8bf7-12345678"}},{eventType:"partyg",createdAt:"2022-01-31T10:16:11.214Z",visitorInfo:{visitorId:"12345678-0ebb-4238-8bf7-12345678"}}]}]
Query
db.collection.aggregate([{$match:{username:"jack"}},{$project:{p:{$filter:{input:"$events",as:"item",cond:{$eq:["$$item.eventType","party"]}}}}},{$project:{total:{$reduce:{input:"$p",initialValue:{visitor:[],uniquevisitor:[]},in:{visitor:{$concatArrays:["$$value.visitor",["$$this.visitorInfo.visitorId"]]},uniquevisitor:{$cond:[{$in:["$$this.visitorInfo.visitorId","$$value.uniquevisitor"]},"$$value.uniquevisitor",{$concatArrays:["$$value.uniquevisitor",["$$this.visitorInfo.visitorId"]]}]}}}}}},{$project:{_id:0,visitorsCount:{$size:"$total.visitor"},uniqueVisitorsCount:{$size:"$total.uniquevisitor"}}}])