我正在阅读 API 文档(并进行了一些实验),但似乎 cursor.count()
不再存在,所以我想知道是否可以获取聚合的计数。这是因为我想知道总共有多少个文档,同时仍然限制和跳过结果。我目前正在使用 $facet 来促进这一点,但不确定是否有更好的方法。
{
$facet:
{
"results":
[
{
"$skip":
start
},
{
"$limit":
finish
},
],
"total":
[
{
"$count":
"total"
},
]
}
}
最佳答案
对于此用例使用 $facet
就风格和性能而言都很好。但应该注意的是,这本质上是两个查询合二为一,尽管是服务器端优化的。无论 $skip/$limit
设置如何,获取过滤 Material 的完整计数(或者如果没有初始 $match
则根本没有过滤器)需要时间。如果 $match
生成的 Material 数量相对较少,则 $count
会很快。所涉及的动态与常规 SQL 世界中的动态非常相似,例如
Run a query with a LIMIT/OFFSET and also get the total number of rows
关于javascript - mongodb - 聚合游标计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53999960/