【发布时间】:2020-12-15 06:41:23
【问题描述】:
我有一个包含开放时间的地点文件列表,详细信息如下:
"openingTimes": {
"Wednesday": [ // array of shifts
{
"startTime": { "hour": 1, "minute": 0 }, // shift starts
"endTime": { "hour": 10, "minute": 0} //shift ends
},
{
"startTime": { "hour": 15, "minute": 0 },
"endTime": { "hour": 23, "minute": 59 }
}
],
"Thursday": [
{
"startTime": { "hour": 0, "minute": 0 },
"endTime": { "hour": 23, "minute": 59 }
}
],
}
我需要添加一个字段来指示该地点现在是否开放,
{
$addFields: {
isOpenNow: {
$and: [
{
$or: [
{
$lt: ['$openingTimes.Wednesday.startTime.hour', 14]
},
{
$and: [
{
$lte: ['$openingTimes.Wednesday.startTime.hour', 14]
},
{
$lte: ['$openingTimes.Wednesday.startTime.minute', 0]
}
]
}
]
},
{
$or: [
{
$gt: ['$openingTimes.Wednesday.endTime.hour', 14]
},
{
$and: [
{
$gte: ['$openingTimes.Wednesday.endTime.hour', 14]
},
{
$gte: ['$openingTimes.Wednesday.endTime.minute', 0]
}
]
}
]
}
]
}
但最终结果为 false 我认为 $gte: ['$openingTimes.Wednesday.endTime.hour', 14] 将小时数数组与 14 进行比较,是否有办法根据其轮班指示该地点是否开放。
【问题讨论】:
-
数据似乎表明它在周三 14:00 关闭。有班次10:00结束,下一班15:00开始。
标签: javascript node.js mongodb mongoose aggregate