计算文档
Node.js 驱动程序提供了两种方法来对集合中的文档进行计数:
collection.countDocuments() 返回集合中与指定查询相匹配的文档的数量。如果指定空查询文档,则
countDocuments()
将返回集合中的文档总数。collection.estimatedDocumentCount() 根据集合元数据返回集合中文档的估计数量。
estimatedDocumentCount()
比 countDocuments()
速度更快,因为此估算会使用集合的元数据,而不是扫描集合。相比之下,countDocuments()
需要更长的时间才能返回,但它提供了文档数量的准确计数并支持指定筛选器。请为您的工作负载选择适当的方法。
为便于指定要对哪些文档进行计数,countDocuments()
接受一个查询参数。countDocuments()
会计算与指定查询匹配的文档数量。
countDocuments()
且 estimatedDocumentCount()
支持会影响此方法执行的可选设置。有关更多信息,请参阅每种方法的对应参考文档。
提示
使用 countDocuments()
返回集合中的文档总数时,可以通过避免集合扫描来提高性能。为此,请使用提示来利用 _id
字段上的内置索引。仅当使用空查询参数调用 countDocuments()
时才使用此技术。
collection.countDocuments({}, { hint: "_id_" });
例子
以下示例估计 sample_mflix
数据库中 movies
集合中的文档数,然后返回 movies
集合中 countries
字段中包含 Canada
的文档数的准确计数。
注意
可以使用此示例连接到 MongoDB 实例,并与包含样本数据的数据库进行交互。如需了解有关连接到 MongoDB 实例和加载样本数据集的更多信息,请参阅使用示例指南。
注意
相同的代码片段
上述 JavaScript 和 TypeScript 代码片段完全相同。驱动程序没有与此使用案例相关的特定于 TypeScript 的功能。
运行上述示例代码应该会有以下输出:
Estimated number of documents in the movies collection: 23541 Number of movies from Canada: 1349