Use o objeto de data real para sua consulta, não a string como você está fazendo atualmente. Como o mongo armazena datas agrupadas com o
ISODate
helper e o BSON subjacente (o formato de dados de armazenamento usado pelo mongo nativamente) tem um tipo de data dedicado UTC datetime que é um inteiro assinado de 64 bits (portanto, 8 bytes) denotando milissegundos desde a época do Unix, sua consulta não retorna nada como ele estará comparando os campos de data no mongo com uma string formatada ISO. Então, solte o
toISOString()
conversão e use o objeto de data:if (data.date) {
const date = new Date();
const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
date.setDate(date.getDate() - dateRange);
query.start = { $lte: date };
console.log(query);
}
Call.find(query, function (error, docs) {
if (error) callback(error, null);
callback(null, docs);
});
Melhor ainda, você pode usar o momentjs plugin que possui uma API de manipulação de data e hora muito intuitiva e fácil. Um método que você pode usar é o
subtract()
função para obter o objeto de data n
número de dias atrás:if (data.date) {
const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
const date = moment().subtract(dateRange, "days");
query.start = { $lte: date };
console.log(query);
}
Call.find(query, function (error, docs) {
if (error) callback(error, null);
callback(null, docs);
});