2014-09-04 1 views
1

Мне нужно получить всю информацию, хранящуюся в моей (mongo) БД, в коллекции, отфильтрованной по дате.Mongodb получает информацию по дате (временная метка, хранящаяся в db)

Проблема в том, что я хранил временную метку в своем BD, и мне нужно получить всю информацию за день.

Например, если я выбрал 2014-01-08, я должен получить все лечение сделано в течение этого дня

Можете ли вы помочь мне с запросом Монго?

Спасибо за заранее

ответ

1

запрос с использованием диапазона дат с «на основе запроса диапазона», который представляет собой простое лечение операторов $gte и $lt:

Предполагая, что вы на самом деле означает «YYYY- MM-DD», как в„год“„месяц“,„день“:

db.collection.find({ 
    "dateField": { 
     "$gte": new Date("2014-08-01"), 
     "$lt": new Date("2014-08-02") 
}); 

так что в основном выбирает все элементы, которые находятся в пределах этого диапазона дат быть только происходящий на„2014-08-01“ONL у. Таким образом, диапазон - это все значения, которые входят в диапазон .

Если метка на самом деле число (миллисекунды начиная с эпохи), то вы просто извлечь эти значения из даты объектов, создавать и отправлять те в запросе:

db.collection.find({ 
    "dateField": { 
     "$gte": new Date("2014-08-01").valueOf(), 
     "$lt": new Date("2014-08-02").valueOf() 
}); 

Тот же принцип применим и для любого языка поскольку поддерживаемый объект DateTime будет иметь способ сделать это.

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

+0

Фактически, мне нужно сравнить временную метку (с 1970 года), хранящуюся в дБ и в день сегодняшнего дня («ГГГГ-ММ-ДД»), и я не знаю, как сделать эту операцию – mfrachet

+0

@ user3660934 Временные метки в виде числа это просто вопрос конверсии. См. Дополнительные сведения. –