2016-02-18 3 views
0

В моем MongoDb (с использованием Mongoose) Я храню даты как строку в utc и формате ISO. Теперь я хочу выполнить поиск записей по дате, но не могу понять, как это сделать.MongoDb найти по дате при сохранении в виде строки

Data.find() 
    .$where(function() { 
     return new Date(this.timeStamp).getTime() > new Date('2016-1-1').getTime(); 
    }) 
    .exec(function(err, wData) { 
     if(err) {return next(err);} 
     res.json(wData); 
    }); 

Проблема является $, где удаляются все общие функции по какой-то причине и «GetTime()» это не метод объекта.

Как бы я это сделал, не меняя схему, чтобы сохранить «Дата».

Редактировать: Я также попробовал Date.parse(). И «console» не существует в $, где либо я пытаюсь вывести что-либо.

Edit2: Вот моя схема, у меня нет доступа к моему Db в данный момент, поэтому я не могу дать образец документа. Тем не менее, я использую данные уже (без $ where, он просто возвращает все, что у меня есть), а форматы даты хороши и правильно конвертируют в объекты Date на передней панели.

var WeatherData = new mongoose.Schema({ 
    timeStamp: String, 
    lightLevel: Number, 
    temperature: Number, 
    pressure: Number, 
    humidity: Number, 
    windSpeed: Number, 
    windDirection: Number 
}); 

Edit3: Хотя проблема решена, я заинтересован в каких-либо других методов, которые не связаны с «RegExp»

+2

Почему во второй 'getTime' вы не вызываете функцию? это опечатка? –

+0

Да, это была опечатка, когда вы задавали вопрос. Однако проблема не устраняет проблему. –

ответ

1

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

WheaterData.find({timeStamp: new RegExp("^YYYY-MM-DD","i") }) 

Он вернет все документы, соответствующие данному дню, в формате ГГГГ-ММ-ДД.

+0

Это работает, но вы можете объяснить, как работает «^ YYYY-MM-DD»? Что делает? Как мне это сделать с диапазонами дат? –

+0

Nevermind Я понял это. WeatherData.find ({ timeStamp: новый RegExp ("^ (2016-02-18 | 2016-02-19)", "i") }) –

+0

Оператор^будет соответствовать началу строки. Использование этого метода сделает сравнение более быстрым и менее подверженным ошибкам. – rodrigovr

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