Sử dụng đối tượng ngày tháng thực tế cho truy vấn của bạn, không phải chuỗi như bạn đang làm hiện tại. Vì mongo lưu trữ các ngày được bao bọc bằng ISODate
helper và BSON cơ bản (định dạng dữ liệu lưu trữ được sử dụng bởi mongo nguyên bản) có loại ngày tháng UTC chuyên dụng là số nguyên có dấu 64 bit (như vậy, 8 byte) biểu thị mili giây kể từ kỷ nguyên thời gian Unix, truy vấn của bạn không trả về bất kỳ thứ gì như nó sẽ so sánh các trường ngày tháng trong mongo với một chuỗi có định dạng ISO.
Vì vậy, hãy thả toISOString ()
chuyển đổi và sử dụng đối tượng ngày tháng:
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);
});
Tốt hơn, bạn có thể sử dụng momentjs
plugin có API mã hóa datetime rất trực quan và dễ dàng. Một phương pháp bạn có thể sử dụng là subtract ()
hàm lấy đối tượng ngày tháng n
số ngày trước:
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);
});