我的收藏中有几十万个文档,每个文档都有一个timestamp
字段。
我想计算上个月每天的记录数量。
我正在运行一个mongoose聚合命令来执行此操作,不幸的是,这比我期望的要长。
以下是聚合函数:
function dailyStats()
{
var lastMonth = new Date();
lastMonth.setMonth(lastMonth.getMonth() - 1);
MyModel.aggregate(
{
$match: {timestamp: {$gte: lastMonth}}
},
{
$group: {
// Data count grouped by date
_id: {$dateToString: {format: "%Y-%m-%d", date: "$timestamp"}},
count: {$sum: 1}
}
},
{$sort: {"_id": 1}},
function (err, docs)
{
console.log(docs);
});
}
现在,整个回调点都是非阻塞代码。但是,执行此功能时,大约需要20-25秒。在这个过程中,我的节点应用程序不响应其他API!
首先,我认为我的CPU变得如此繁忙,以至于它没有响应其他任何东西。所以我有一个小节点应用程序随之运行,这很好用! 所以我不明白为什么这个应用程序不会响应其他请求,直到mongodb驱动程序返回结果。