Cách tốt nhất để giải quyết vấn đề này là lưu trữ các phút riêng biệt là tốt. Nhưng bạn có thể giải quyết vấn đề này với khung tổng hợp, mặc dù điều đó không sẽ rất nhanh:
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 } } }
] );
Trong bước đầu tiên $project
, chúng tôi tính số phút từ hour * 60 + min
mà sau đó chúng tôi đối sánh với ở bước thứ hai:$match
.