Вы можете использовать $, где :
db.collection.find({$where: "var d = new Date(this.dateProperty); return d.getUTCHours() == 15 && d.getUTCMinutes() == 0 && d.getUTCSeconds() == 0"})
Или регулярное выражение:
db.collection.find({dateProperty: /.*15:00.*/})
Второй может быть немного быстрее первого, но оба будут относительно медленными. Для ускорения работы вы должны хранить даты во встроенном формате date
. Также, если вам нужно выполнить запрос к компонентам datetime, рассмотрите возможность добавления индексируемого представления даты, такого как {y:2010,m:9,d:21,h:14,i:16,s:17}
(свойства зависят от потребностей вашего запроса, если вам нужен запрос только по часу, у вас будет {h:14}
). Тогда вы можете иметь индекс для каждого компонента.