Я пытаюсь получить количество клиентов за последний час, но когда я запускаю код, он возвращает пустой массив (я уже проверял, есть ли какие-то данные в updated
за последний час).
Вот код.
const start = new Date();
start.setHours(0, 0, 0, 0); //milliseconds 00:00:00.000
const end = new Date();
end.setHours(23, 59, 59, 999); //milliseconds 23:59:59.999
const now = new Date().getTime();
const lastOneHr = new Date().getTime() - 60 * 60 * 1000;
//get chart info
router.post("/getcustomerchart/:adminId", (req, res, next) => {
const adminId = req.params.adminId;
Customer.aggregate([
{
$facet: {
today: [
{
$match: {
$and: [
{ adminId: adminId },
{ updated: { $gte: start, $lte: end } },
],
},
},
{ $count: "count" },
],
lastHour: [
{
$match: {
$and: [
{ adminId: adminId },
{ updated: { $gte: lastOneHr, $lte: now } },
],
},
},
{ $count: "count" },
],
all: [{ $match: { adminId: adminId } }, { $count: "count" }],
},
},
])
.then((docs) => {
const response = {
count: docs.length,
customer_info: docs.map((doc) => {
return {
lastHour: doc.lastHour,
today: doc.today,
all: doc.all,
};
}),
};
res.status(200).json(response);
})
.catch((err) => {
console.log(err);
res.status(500).json({
error: err,
});
});
});
Вот результат от Почтальона. Мне удалось подсчитать today
и all
, кроме lastHour
. Что-то не так с форматом?
{
"count": 1,
"customer_info": [
{
"lastHour": [],
"today": [
{
"count": 1
}
],
"all": [
{
"count": 10
}
]
}
]