javascript - mongodb - 聚合游标计数
问题描述
我正在阅读 API 文档(并且正在做一些实验),但它似乎cursor.count()
不再存在,所以我想知道是否有可能获得你的聚合计数。这是因为我想知道总共有多少个文档,同时仍然限制和跳过结果。我目前正在使用 $facet 来促进这一点,但不确定是否有更好的方法。
{
$facet:
{
"results":
[
{
"$skip":
start
},
{
"$limit":
finish
},
],
"total":
[
{
"$count":
"total"
},
]
}
}
解决方案
用于这个用$facet
例很好,无论是风格还是性能。不过应该注意的是,这实际上是两个查询合二为一,尽管是在服务器端优化的。无论设置如何,获取过滤材料的全部计数(或者如果没有初始过滤器,则根本没有过滤器$match
)需要时间$skip/$limit
。如果$match
产生相对少量的材料,那么$count
会很快。所涉及的动态与常规 SQL 世界中的动态非常相似,例如
运行带有 LIMIT/OFFSET 的查询并获得总行数
推荐阅读
- python - 如何将 1d 数组转换为 3d 数组(将灰度图像转换为 rgb 格式)?
- sql - ActiveRecord 连接添加 where to have 子句
- javascript - 方法不等待获取完成
- go - 如何修复`kafka:客户端已用完可用的代理来与之交谈(您的集群是否可达?)`错误
- perl - 如何调用 Perl 闭包通过引用返回的子对象?
- spring - 应用程序使用 spring boot starter 2.0.4 但不适用于 2.1.6 版本
- graphql - 使用 8base 的 GraphQL API 保存电话号码和地址时遇到问题
- c# - 如何在使用 c# 选择后将对象与 ListBox 绑定以获取其属性
- tensorflow - Keras model.evaluate 和 model.predict 给出不同的结果
- acumatica - 为固定字段长度 .txt 创建 Acumatica 数据提供程序