Usa l'oggetto della data effettiva per la tua query, non la stringa come stai facendo attualmente. Perché mongo memorizza le date avvolte con ISODate
helper e il BSON sottostante (il formato dei dati di archiviazione utilizzato da mongo in modo nativo) ha un tipo di data dedicato UTC datetime che è un intero con segno a 64 bit (quindi, 8 byte) che denota millisecondi dall'epoca di Unix, la tua query non restituisce nulla come confronterà i campi della data in mongo con una stringa formattata ISO.
Quindi, rilascia toISOString()
conversione e utilizzare l'oggetto 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);
});
Meglio ancora, puoi utilizzare il momentjs
plug-in che ha un'API di manipolazione della data e dell'ora molto intuitiva e facile. Un metodo che puoi utilizzare è subtract()
funzione per ottenere l'oggetto data n
numero di giorni fa:
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);
});