2014-12-10 3 views
1

У меня есть база данных, содержащая электронные письма, и я хочу найти конкретную дату с помощью оператора regex и вернуть все электронные письма, отправленные в эту дату. Я пробовал это до сих пор, но ничего не возвращает. Я новичок в регулярном выражении и не уверен, правильно ли я задал дату.Запрос встроенных документов по датам соответствия в MongoDB

db.messages.find({'headers.Date' : $regex : '2001-07-06'}}) 

В этом примере ниже успешно возвращены все письма, отправленные с указанного адреса электронной почты.

db.messages.find({'headers.From' : { $regex : '[email protected]' } }); 

Письма содержат следующую информацию:

headers { content transfer encoding, content type, date, from, message id, mime version, subject, to } 
+1

Можете ли вы отредактировать свой пост с примером своего документа? – styvane

+0

Спасибо за ваш ответ. 2-й запрос работал, электронные письма были возвращены, несмотря на то, что они были очень близки к совпадению, я заметил, что месяц всегда был на месяц раньше указанной даты 7/7/2001, 6/7/2001. Это, вероятно, нуждается в небольшой корректировке. – Conor94

ответ

1

Вам не нужно сделать использование регулярных выражений здесь, что-то более простое, как это должно работать:

db.posts.find({"headers.Date": new Date(2001, 06, 06) }) 

Это должно работать, если даты вы сохранили в БД без времени (только день, месяц, год)

Теперь, если вы h просп дате, сохраненная с новой датой(), которая включает в себя компоненты времени, а также, то вам нужно создать диапазон дат, который включает в себя все моменты на этот день:

db.posts.find(//query for all moments/time of a specific date 
    {"headers.Date": {"$gte": new Date(2001, 6, 6), "$lt": new Date(2001, 6, 7)}}) 

Примечания - API для Дата: Дата (ГГГГ, ММ, ДД) и подсчет «месяц» начинается с «0» и подсчет «даты» начинается с «1».

+0

Двигатель v8, используемый в оболочке 'mongo' от MongoDB 2.4+, реализует стандарт JavaScript ECMAScript 5 (ES5). ES5 поддерживает даты ISO8601 в конструкторе, например: 'new Date (« 2001-06-07 »)'. Существует также помощник оболочки 'ISODate()', который поддерживает конструктор даты ISO и доступен в оболочках 'mongo' до 2.4. – Stennie

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