Database

[{"_id":ObjectId("6257047cffd61ab62864c1ae"),"type":"A","source":"B","user":ObjectId("622b55ff0b0af6b049c387d3"),"createdAt":ISODate("2022-04-17T07:55:00.368Z"),"updatedAt":ISODate("2022-04-17T07:55:00.368Z"),},{"_id":ObjectId("6257047cffd61ab62864c1ad"),"type":"B","source":"A","user":ObjectId("622b55ff0b0af6b049c387d3"),"createdAt":ISODate("2022-04-23T07:55:00.368Z"),"updatedAt":ISODate("2022-04-23T07:55:00.368Z"),},{"_id":ObjectId("6257047cffd61ab62864c1ce"),"type":"A","source":"C","user":ObjectId("622b55ff0b0af6b049c387d3"),"createdAt":ISODate("2022-04-17T07:55:00.368Z"),"updatedAt":ISODate("2022-04-17T07:55:00.368Z"),},{"_id":ObjectId("6257047cffd61ab62864c1cb"),"type":"A","source":"B","user":ObjectId("622b56250b0af6b049c387d6"),"createdAt":ISODate("2022-04-24T07:55:00.368Z"),"updatedAt":ISODate("2022-04-24T07:55:00.368Z"),},{"_id":ObjectId("6257047cffd61ab62864c1cc"),"type":"A","source":"B","user":ObjectId("622b56250b0af6b049c387d6"),"createdAt":ISODate("2022-03-24T07:55:00.368Z"),"updatedAt":ISODate("2022-03-24T07:55:00.368Z"),},{"_id":ObjectId("6257047cffd61ab62864c1cd"),"type":"A","source":"C","user":ObjectId("622b55ff0b0af6b049c387d3"),"createdAt":ISODate("2022-03-17T07:55:00.368Z"),"updatedAt":ISODate("2022-03-17T07:55:00.368Z"),},]

Query

db.collection.aggregate([{$addFields:{paramType:"All",paramSource:"All",paramCreatedAt:"All dates"/** [All dates, 7 days ago, a month ago]*/}},{$match:{$and:[{user:ObjectId("622b55ff0b0af6b049c387d3")},{$or:[{paramType:{$eq:"All"}},{$expr:{$eq:["$paramType","$type"],}}]},{$or:[{paramSource:{$eq:"All"}},{$expr:{$eq:["$paramSource","$source"]}}]},{$or:[{paramCreatedAt:{$eq:"All dates"}},{$expr:{$and:[{"$in":["$paramCreatedAt",["7 days ago","a month ago"]]},{$lte:[{"$dateDiff":{"startDate":"$createdAt","endDate":"$$NOW","unit":"day"}},{"$switch":{"branches":[{"case":{$eq:["$paramCreatedAt","7 days ago"]},"then":7},{"case":{$eq:["$paramCreatedAt","a month ago"]},"then":30}]}}]}]}}]}]}},{$setWindowFields:{output:{totalCount:{$count:{}}}}},{$sort:{createdAt:-1}},{$skip:0},{$limit:6},{"$project":{"paramSource":false,"paramType":false,}}])

Result