У меня проблема, когда я хочу запрашивать и сравнивать вложенные документы и их поля в этом документе. В целом у меня есть база данных с ресторанами. В каждом из ресторанов есть документ "openingHours"
, который содержит документ на каждый день недели с 3 полями
1 День недели
2 Время открытия
3 Время закрытия
В моем запросе цель состоит в том, чтобы сравнить opening time
и 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 , чтобы помочь показать, что я имею в виду с документами. Также на рисунке видно, что проблема возникает, когда он не выполняет запрос для каждого из вложенных документов, так как время может различаться изо дня в день.
Заранее спасибо!