У меня есть коллекция ресторанов, которые я бы хотел запросить, если они открыты или нет. Запрос должен работать через границы дня (например, с 10:00 до 01:00). Их часы работы пока не определены в коллекции, но я могу установить схему на основе ответов на этот вопрос.MongoDB: Как запросить между двумя часами?
Но, к примеру, скажем, у меня есть коллекция, как это:
[
{
"name": "Pete's Bar",
"hours":
{
"Sun": {
"open": "0800",
"close": "1800"
},
"Mon": {
"open": "0800",
"close": "1800"
},
"Tue": {
"open": "0800",
"close": "1800"
},
"Wed": {
"open": "closed",
"close": "closed"
},
"Thu": {
"open": "0800",
"close": "1800"
},
"Fri": {
"open": "0800",
"close": "0100"
},
"Sat": {
"open": "0800",
"close": "0100"
}
}
}
]
на основе текущего времени суток и дня недели, как бы я запроса к базе данных для всех ресторанов, которые в настоящее время открыты? В настоящее время я просто нахожу все рестораны и делаю логику на питоне. Я хотел бы просто сделать манго, если это возможно. ЕЩЕ РАЗ! Схема часов может меняться в соответствии с ответом.
не может дать точный ответ, но если вы в состоянии написать [УД «хранимая процедура»] (HTTP: // dirolf .com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html), я бы рекомендовал конвертировать каждое открытое и закрытое время в 'unixtime' (или 'utc'), тогда вы могли бы сделать' if open_time <= now и now <= close_time'. Но вам все равно нужно добавить материал, чтобы конвертировать время открывания и закрытия (в выбранную временную шкалу obj) в течение различных дней, а затем проверять каждый против now_time. Опять же, возможно, сделать через js, но обратите внимание, что это не эквивалентно хранимой процедуре; просто смутно похожи. И не может быть эффективным с точки зрения запросов. – aneroid
Кроме того, 'open_time' должен быть создан/рассчитан против ** текущей ** даты/времени, чтобы это сравнение работало. Стоит попробовать, но на основе скорости, он может быть не намного эффективнее, чем ваш текущий подход «получить от запроса и процесса в python»; так как служебные данные запроса будут по-прежнему применяться для js-proc. – aneroid
Да, я в основном делаю всю эту логику вне запроса. Я не знаю, будет ли дифференциал скорости между этими двумя методами. Плюс моя питонная логика работает сейчас. Я ищу серебряную пулю, если она вообще существует :) –