2015-03-12 6 views
1

У меня есть этот уровень в Mongoose документов enter image description hereв мангуста Запросы и фильтрация по датам

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

я попробовать что-то вроде этого:

.populate('geometries', null, { 'locations.properties.timeStamp': { $gt: startDate, $lt: endDate }}) 
.exec(function(err, item) { 
//some code 
} 

И как это:

.populate('geometries') 
.where({ 'locations.properties.timeStamp': { $gt: startDate, $lt: endDate }}*/) 
.exec(function(err, item) { 
    //some code 
    } 

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

EDIT 1:

Переменные, STARTDATE и ENDDATE приходит в URL от контроллера углам главного, они определяются следующим образом:

  var deductDate = new Date(endDate); 
      var startDate = deductDate.setDate(deductDate.getDate()-1); 

      Item.currentDay($stateParams.epc, url, { 
       groupBy: '1d', 
       endDate: moment(endDate).format(), 
       startDate: moment(startDate).format('YYYY-MM-DD') + "T23:59:59" 
      }); 

И в API ГЭТ маршрут, который обрабатывает, что является:

handler: function(request, reply) { 
    var startDate = request.query.startDate; 
    var endDate = request.query.endDate; 
    Item.findById(request.params.id) 
    .populate('geometries', null, { 'locations.properties.timeStamp': { $gt: startDate, $lt: endDate }}) 
    .exec(function(err, item) { 
     if (err) { 
     reply(err); 
     } else { 
     reply(item); 
     } 
    }); 
} 
+0

Покажите нам, где вы определяете STARTDATE и ENDDATE –

+0

Спасибо за ваш ответ @YuriZarubin , в исходном посте добавьте то, что вы просите. – diego

ответ

1

Попробуйте сделать это:

.populate({ 
    path: 'geometries', 
    match: { 'locations.properties.timeStamp': { $gt: startDate, $lt: endDate }}, 
}).exec() 

Выдержки из мангустов документации об условиях запросов и другие варианты (http://mongoosejs.com/docs/populate.html)

+0

Спасибо scuencag, но все еще не работает, console.log показывает нулевое значение. Это формат te, который я использую для поиска: startDate: 2015-03-13T23: 59: 59, endDate: 2015-03-14T19: 47: 37-03: 00. Они в порядке? – diego

0

ли это:

var startDate = new Date(request.query.startDate); 
    var endDate = new Date(request.query.endDate); 
+0

с тем, что фильтр по-прежнему не работает, является ли «locations.properties.timeStamp» правильным для acces timeStamp для использования фильтра даты? – diego

+0

Выглядит правильно. Попробуйте выполнить простой тест, например: populate ('geometries', null, {'locations.properties.timeStamp': {$ gt: new Date ('2015-05-10')}}) –

+0

Я делаю этот тест, но фильтр не работает, возвращает нулевое значение. – diego

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