【发布时间】:2020-08-17 15:23:04
【问题描述】:
我将每天的营业时间存储为一系列班次,如下所示:
{
Monday: [{
startTime: {
hour: 8,
minute: 50
},
endTime: {
hour: 20,
minute: 30
}
}];
}
我正在尝试使用 MongoDB 聚合 $match 运算符检索班次开始和结束之间的文档,如下所示:
{
$match: {
'Monday.startTime.hour': { // ex: 8
$lte: parseInt(now.format('HH'), 10), // now hours: 18
},
'Monday.startTime.minute': { // ex: 50
$lte: parseInt(now.format('mm'), 10), // now minutes: 40
},
'Monday.endTime.hour': { // ex: 20
$gte: parseInt(now.format('HH'), 10), // now hours: 18
},
'Monday.endTime.minute': { // ex: 30
$gte: parseInt(now.format('mm'), 10), // now minutes: 40
},
}
}
但是问题是我们有一个如下图所示的移位示例, 第一个匹配条件:
'Monday.startTime.hour': {
$lte: parseInt(now.format('HH'), 10),
}
将通过,因为 8 小于 18。
但第二个匹配条件匹配分钟部分:
'Monday.startTime.minute': { // ex: 50
$lte: parseInt(now.format('mm'), 10), // now minutes: 40
},
将失败,因为 50 大于 40
虽然在现实生活中08:50 出现在18:40 之前
【问题讨论】:
标签: javascript node.js mongodb datetime mongoose