Я пытаюсь фильтровать запрос по диапазону дат динамически параметров от GETNode.js/MongoDB Дата Фильтр диапазон
var date_from = req.query['date_from'];
var date_to = req.query['date_to'];
var options = {};
if(date_from){
if(!options["sentDateTime"]) options["sentDateTime"] = [];
var dateFrom = moment(new Date(date_from)).toDate();
options["sentDateTime"]['$qte'] = dateFrom;
}
if(date_to){
if(!options["sentDateTime"]) options["sentDateTime"] = [];
var dateTo = moment(new Date(date_to)).toDate();
options["sentDateTime"]['$lte'] = dateTo;
}
Например мои варианты выглядят
{ sentDateTime: { '$qte': Tue Mar 01 2016 00:00:00 GMT+0000 (GMT) } }
Остальной код
db.client.collection('mails_ed').find(options).limit(parseInt(req.query['limit'])).toArray(function(err, docs) {
// ...
})
Но он возвращает нулевые документы.
Edit:
После изменения мой объект выглядеть следующим образом
{ sentDateTime:
[ '$qte': Tue Mar 01 2016 00:00:00 GMT+0000 (GMT),
'$lte': Fri Mar 18 2016 00:00:00 GMT+0000 (GMT) ]
}
Как вы можете видеть, что варианты завернуть в массив «[]», как я могу это исправить?
Это не действительная строка даты ISO для Mongo. Оберните объект момента в 'новая дата', а не наоборот. 'new Date (moment (date_to) .utc())' работал для меня –
Спасибо за комментарий. Я иду с этим решением, но все же что-то не так. Я думаю, что, возможно, в объектных вариантах выглядит так, как сейчас выглядит – pr0metheus