Е, най-добрият начин да решите това е дасъхраняте минутите също поотделно. Но можете да заобиколите това с рамката за агрегиране, въпреки че това ене ще бъде много бързо:
db.so.aggregate( [
{ $project: {
loc: 1,
vid: 1,
datetime_recorded: 1,
minutes: { $add: [
{ $multiply: [ { $hour: '$datetime_recorded' }, 60 ] },
{ $minute: '$datetime_recorded' }
] }
} },
{ $match: { 'minutes' : { $gte : 12 * 60, $lt : 16 * 60 } } }
] );
В първата стъпка $project
, изчисляваме минутите от hour * 60 + min
с които след това съпоставяме във втората стъпка:$match
.