Използвайте действителния обект за дата за вашата заявка, а не низ, както правите в момента. Тъй като mongo съхранява дати, обвити с ISODateкод>
помощник и основният BSON (форматът за данни за съхранение, използван от mongo нативно) има специален тип дата UTC datetime, което е 64-битово (така, 8 байта) цяло число със знак, обозначаващо милисекунди от времевата епоха на Unix, вашата заявка не връща нищо като той ще сравнява полетата за дата в mongo с ISO форматиран низ.
Така че, пуснете toISOString()
преобразуване и използвайте обекта за дата:
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);
});
Още по-добре, можете да използвате momentjs
плъгин, който има много интуитивен и лесен API за манипулиране на дата и час. Един метод, който можете да използвате, е subtract()
функция за получаване на обекта за дата n
преди брой дни:
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);
});