Använd det faktiska datumobjektet för din fråga, inte sträng som du gör för närvarande. Eftersom mongo lagrar datum inslagna med ISODate
helper och det underliggande BSON (lagringsdataformatet som används av mongo naturligt) har en dedikerad datumtyp UTC datetime som är ett 64-bitars (alltså 8 byte) signerat heltal som anger millisekunder sedan Unix-tidsepoken, din fråga returnerar inget som det kommer att jämföra datumfälten i mongo med en ISO-formaterad sträng.
Så släpp toISOString()
konvertering och använd datumobjektet:
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);
});
Ännu bättre, du kan använda momentjs
plugin som har ett mycket intuitivt och enkelt datetime manipulation API. En metod du kan använda är subtract()
funktion för att hämta datumobjektet n
antal dagar sedan:
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);
});