javascript - mongodb - 聚合游标计数

标签 javascript node.js mongodb

我正在阅读 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/

相关文章:

mongodb - 在 Meteor 中,发布有限制的搜索结果时,为什么结果上的 ".count"显示超过限制?

MongoDB AggregationOutput 响应时间更长

javascript - 将 jquery 选择器对象添加到单个 jquery 对象中

javascript - 光滑的旋转木马在 ie9 中不起作用

javascript - 异步文件读取时出现 EMFILE 错误

javascript - Node.js 同步调用护照本地注册

Mongodb:$group 的_id 中的嵌套字段

javascript - 什么值从带有复选框的表单传递到 java 脚本

javascript - 如何防止 Visual Studio Code 在格式化代码时打断长行?

node.js - 在 Express 中,为什么 .config() 中的 env 变量是可选的?