Database
db={"users":[{"_id":1,"email":"user1@gmail.com","username":"user1","country":"BR","creation_date":1646873628},{"_id":2,"email":"user2@gmail.com","username":"user2","country":"US","creation_date":1646006402}],"activities":[{"_id":1,"email":"user1@gmail.com","activity":"like","timestamp":1647564787},{"_id":2,"email":"user1@gmail.com","activity":"comment","timestamp":1647564788},{"_id":3,"email":"user2@gmail.com","activity":"like","timestamp":1647564831}]}
Query
db.users.aggregate([{/** Get users using some filters*/"$match":{"$expr":{"$and":[{"$not":{"$in":["$country",["AR","CA"]]}},{"$gte":["$creation_date",1646006400]},{"$lte":["$creation_date",1648684800]}]}}},{/** Get the last activity within the time range*/"$lookup":{"from":"activities","as":"last_activity","let":{"cur_email":"$email"},"pipeline":[{"$match":{"$expr":{"$and":[{"$eq":["$email","$$cur_email"]},{"$gte":["$timestamp",1647564787]},{"$lte":["$timestamp",1647564834]}]}}},{"$sort":{"timestamp":-1}},{"$limit":1}]}},{/** Remove users with no activity*/"$match":{"$expr":{"$gt":[{"$size":"$last_activity"},0]}}}])