Database

[{"timings":[{"start":"11:30 am","end":"03:00 pm"},{"start":"11:30 pm","end":"03:00 pm"}]},{"timings":[{"start":"02:30 am","end":"11:59 am"},{"start":"11:30 pm","end":"03:00 pm"}]},{"timings":[{"start":"08:30 am","end":"11:30 am"},{"start":"09:30 am","end":"11:30 am"}]},{"timings":[{"start":"00:30 am","end":"02:30 am"}]},{"timings":[]}]

Query

db.collection.aggregate([{"$unwind":"$timings"},{$set:{startHour:{$add:[{$mod:[{$toInt:{$substr:["$timings.start",0,2]}},12]},{$divide:[{$toInt:{$substr:["$timings.start",3,2]}},60]},{$cond:[{$eq:[{$substr:["$timings.start",6,2]},"am"]},0,12]}]},startingHour:{$add:[{$mod:[{$toInt:{$substr:["03:00 am",0,2]}},12]},{$divide:[{$toInt:{$substr:["03:00 am",3,2]}},60]},{$cond:[{$eq:[{$substr:["03:00 am",6,2]},"am"]},0,12]}]},endingHour:{$add:[{$toInt:{$substr:["11:59 pm",0,2]}},{$divide:[{$toInt:{$substr:["11:59 pm",3,2]}},60]},{$cond:[{$eq:[{$substr:["11:59 pm",6,2]},"am"]},0,12]}]},endHour:{$add:[{$toInt:{$substr:["$timings.end",0,2]}},{$divide:[{$toInt:{$substr:["$timings.end",3,2]}},60]},{$cond:[{$eq:[{$substr:["$timings.end",6,2]},"am"]},0,12]}]}}},{$set:{endHour:{$cond:[{$eq:["$endHour",0]},24,"$endHour"]},endingHour:{$cond:[{$eq:["$endingHour",0]},24,"$endingHour"]}}},{$match:{$expr:{$and:[{$gte:["$startHour","$startingHour"]},{$lte:["$endHour","$endingHour"]}]}}},{$unset:["startHour","endHour","startingHour","endingHour"]}])

Result