Database

[{status:"PENDING_START_DATE",startDate:1,endDate:2,custom:true,day:"MONDAY",startTime:"13:00"},{status:"PENDING_START_DATE",startDate:1,endDate:2,custom:false},{status:"PENDING_START_DATE",startDate:1,endDate:2,custom:true},{status:"PENDING_START_DATE",startDate:1,endDate:2,custom:true,day:"TUESDAY"}]

Query

db.collection.aggregate([{$match:{"$or":[{status:"PENDING_START_DATE",startDate:{$lte:1},endDate:{$gte:2},custom:true,day:"MONDAY",startTime:"13:00"},{status:"PENDING_START_DATE",startDate:{$lte:1},endDate:{$gte:2},custom:false}]},}])

Result