在MongoDB上正常运行“查找”查询时,可以对返回的游标执行“count”操作以获取总结果数(无论限制是什么)。因此,即使将结果集限制为10(例如),我仍然可以知道结果的总数是53(例如)。
但是,如果我正确理解的话,聚合框架不会返回游标,而只返回结果。所以,如果我使用了$limit
管道操作符,无论该值如何限制,我如何知道结果的总数呢?
我想我可以两次运行聚合操作(一次通过$group
计算结果总数,一次通过$limit
获得实际受限结果),但这似乎效率低下。
另一种方法是在$limit
操作之前通过$group
将结果总数附加到文档中,但这似乎也效率低下,因为这个数字将附加到每个文档上(而不是仅仅对于一组返回一次)。
我是否遗漏了什么?有什么想法吗?谢谢!
例如,如果这是查询:
db.article.aggregate(
{ $group : {
_id : "$author",
posts : { $sum : 1 }
}},
{ $sort : { posts: -1 } },
{ $limit : 5 }
);
在$limit
之前,我如何知道有多少结果可用?结果不是光标,因此我不能只运行计数。