W zapytaniu użyj rzeczywistego obiektu daty, a nie ciągu, jak to robisz obecnie. Ponieważ mongo przechowuje daty opakowane w ISODate
helper i bazowy BSON (format danych do przechowywania używany przez mongo natywnie) ma dedykowany typ daty UTC datetime, który jest 64-bitową (a więc 8-bajtową) liczbą całkowitą ze znakiem, oznaczającą milisekundy od epoki czasu uniksowego, twoje zapytanie nie zwraca niczego jako będzie porównywać pola daty w mongo z ciągiem w formacie ISO.
Więc upuść toISOString()
konwersja i użyj obiektu daty:
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);
});
Co więcej, możesz użyć momentjs
wtyczka, która ma bardzo intuicyjny i łatwy interfejs API do manipulacji datami. Jedną z metod, których możesz użyć, jest subtract()
funkcja do pobrania obiektu daty n
liczba dni temu:
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);
});