当我想查询和比较嵌套文档及其在该文档中的字段时,我遇到了问题。总的来说,我有一个餐厅数据库。每个餐厅都有一个名为的文档"openingHours"
,其中包含一周中每一天的文档,其中包含 3 个字段
1 星期几
2 开放时间
3 关闭时间
在我的查询中,目标是比较每个文档(天)的opening time
and 。closing time
现在的问题是,当我运行查询时,我会根据里面的所有文档得到一个结果,"openingHours"
并且它不会单独比较每个文档。背后的原因"$expr"
是餐厅关闭的时间可以延长到 01:00,所以我们也需要检查一下。
这是我的查询:
$or: [
{
$and: [
{
"$expr" : {
"$gt" : [
"$openingHours.open",
"$openingHours.close"
]
}
},
{
"openingHours.close": {$gte: openingHours}
}
]
},
{
$and: [
{
"$expr" : {
"$gt" : [
"$openingHours.open",
"$openingHours.close"
]
}
},
{
"openingHours.close": {$lte: openingHours}
},
{
"openingHours.open": {$lte: openingHours}
}
]
},
{
$and: [
{
"$expr" : {
"$lt" : [
"$openingHours.open",
"$openingHours.close"
]
}
},
{
"openingHours.open": {$lte: openingHours}
},
{
"openingHours.close": {$gte: openingHours}
}
]
},
]
})
Robo3t 的屏幕截图,以帮助说明我对文档的意思。您还可以在图像中看到,当它不对每个嵌套文档本身进行查询时会出现问题,因为时间可能每天都不同。
提前致谢!