2013-09-20 6 views
1

Я создаю базу данных, где я могу запросить день недели. Можно ли использовать mongodb для запроса дней в неделю в поле даты datetime (или utc timestamp)?получить день недели из запроса mongodb datetime

Нечто подобное; получить каждый объект, который имеет дату и время, которое было в понедельник.

Если это невозможно, альтернатива, по-видимому, создает в сборнике фиктивные переменные, которые показывают, в какой день недели это было. Я предпочитаю только запрашивать объект datetime для этого, поскольку это уменьшит базу данных.

+0

Связано с http://stackoverflow.com/questions/8136652/query-mongodb-on-month-day-year-of-a-datetime –

+2

В зависимости от того, что вы пытаетесь сделать, структура агрегации имеет (http://docs.mongodb.org/manual/reference/aggregation/dayOfWeek/#exp._S_dayOfWeek). – WiredPrairie

ответ

1

Есть три решения, которые я могу думать:

  1. Вашего решения : создать дополнительное поле «day_of_week», либо int, либо строку, а затем запросить это поле, а не поле datetime.
  2. Запрос на все в вашей коллекции, а затем фильтрацию результатов по дням недели на стороне клиента.
  3. Используйте $ где, передавая функцию javascript, которая вызывает date.getDay(). Например, {$where: function() { return this.date.getDay() == 5; }} для получения каждой даты в пятницу.

Решение № 2 позвонило бы datetime.date.weekday() в pymongo на стороне клиента. Недостатком этого метода является то, что каждый документ в коллекции будет отправлен по кабелю, что может добавить ненужную нагрузку на сеть. Это лучше, чем # 1, тем не менее, в том, что это больше пространства, и у вас нет дублированной информации для синхронизации. Решение № 3 не имеет ни одной из этих проблем, но $ where медленнее, потому что для этого требуется, чтобы сервер создавал контекст выполнения JavaScript и не мог использовать индексы.

Смежные вопросы