Database
db={"users":[{"_id":"P4SpYVd1KjBaF4SKyVw0E","login":"User-01","name":"John","lastName":"Doe"},{"_id":"we_9OrnWvSFE2TRrxKbo-","login":"User-02","name":"Helen","lastName":"Smith"}],"moods":[{"source":{"userId":"P4SpYVd1KjBaF4SKyVw0E"},"timestamp":{"$date":"2022-06-11T12:44:13.333Z"},"mood":"bad","_id":"62a352b83859aaf975c6332d"},{"source":{"userId":"we_9OrnWvSFE2TRrxKbo-"},"timestamp":{"$date":"2022-06-11T17:24:17.333Z"},"mood":"good","_id":"62a351ed3859aaf975c63325"},{"source":{"userId":"P4SpYVd1KjBaF4SKyVw0E"},"timestamp":{"$date":"2022-06-12T08:24:43.333Z"},"mood":"bad","_id":"43x543v98756bhx098b1432c"},{"source":{"userId":"we_9OrnWvSFE2TRrxKbo-"},"timestamp":{"$date":"2022-06-12T11:34:27.333Z"},"mood":"good","_id":"76x123tr9857wwq967r43567"},],"contactRequests":[{"timestamp":{"$date":"2022-06-11T13:24:43.333Z"},"source":{"userId":"P4SpYVd1KjBaF4SKyVw0E"},"resolve":true,"_id":"43d342sff3859aaf975c63329"},{"timestamp":{"$date":"2022-06-11T16:14:23.333Z"},"source":{"userId":"P4SpYVd1KjBaF4SKyVw0E"},"resolve":false,"_id":"23d666sff3859aaf975c34259"},{"timestamp":{"$date":"2022-06-12T15:15:13.333Z"},"source":{"userId":"we_9OrnWvSFE2TRrxKbo-"},"resolve":false,"_id":"53d666szz2358aaf975c34439"}]}
Query
db.users.aggregate([{"$match":{/** id comes from param*/"_id":"P4SpYVd1KjBaF4SKyVw0E"}},{"$lookup":{"from":"moods","localField":"_id","foreignField":"source.userId","pipeline":[{"$lookup":{"from":"contactRequests","localField":"source.userId","foreignField":"source.userId","let":{/** truncate timestamp to start of day*/"moodsDate":{"$dateTrunc":{"date":"$timestamp","unit":"day"}}},"pipeline":[{"$match":{"$expr":{"$eq":["$$moodsDate",{/** truncate timestamp to start of day*/"$dateTrunc":{"date":"$timestamp","unit":"day"}}]}}}],"as":"contactRequests"}},{$group:{_id:{$dateToString:{format:"%Y-%m-%d",date:"$timestamp",},},mood:{$push:{_id:"$_id",source:"$source",type:"$mood",timestamp:"$timestamp",},},contactRequest:{$push:{_id:"$contactRequest._id",source:"$contactRequest.source",resolve:"$contactRequest.resolve",timestamp:"$contactRequest.timestamp",},},},},{$project:{_id:0,timestamp:"$_id",mood:1,contactRequest:1},},{$unwind:"$mood"},{$sort:{_id:1}},],as:"calendar"}}])