对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

计算文档

在本指南中,您可以学习如何使用Rust驱动程序检索集合中文档数量的准确估计数。count_documents() 方法返回与查询筛选条件匹配或存在于集合中的文档的确切数量,estimated_document_count() 方法返回集合中文档的估计数量。

本指南中的示例使用Atlas示例数据集sample_restaurants数据库中的 restaurants集合。要从Rust应用程序访问权限此集合,请创建一个连接到Atlas 集群的Client,并将以下值分配给 my_coll 变量。

选择AsynchronousSynchronous标签页,查看每个运行时的相应代码:

let uri = "<connection string>";
let client = Client::with_uri_str(uri).await?;
let my_coll: Collection<Document> = client
.database("sample_restaurants")
.collection("restaurants");
let uri = "<connection string>";
let client = Client::with_uri_str(uri)?;
let my_coll: Collection<Document> = client
.database("sample_restaurants")
.collection("restaurants");

要学习如何创建免费的MongoDB Atlas 集群并加载示例数据集,请参阅Rust驱动程序入门指南

本指南中的示例使用以下 Restaurant 结构作为 restaurants 集合中文档的模型:

#[derive(Serialize, Deserialize, Debug)]
struct Restaurant {
name: String,
cuisine: String,
}

使用 count_documents() 方法计算集合中的文档数量。要计算符合特定搜索条件的文档数量,请将查询筛选条件文档传递给 count_documents() 方法。

要了解有关指定查询的更多信息,请参阅指定查询指南。

要返回集合中所有文档的计数,请将空过滤器文档传递给 count_documents() 方法,如以下示例所示。选择 AsynchronousSynchronous标签页,查看每个运行时的相应代码:

let ct = my_coll.count_documents().await?;
println!("Number of matching documents: {}", ct);
Number of documents: 25216
let ct = my_coll.count_documents().run()?;
println!("Number of matching documents: {}", ct);
Number of documents: 25216

要返回匹配特定搜索条件的文档计数,请将查询过滤文档传递给count_documents()方法。

以下示例计算 name字段的值包含 string "Sunset" 的文档数量。选择 AsynchronousSynchronous标签页,查看每个运行时的相应代码:

let ct = my_coll
.count_documents(doc! { "name": doc! { "$regex": "Sunset" } })
.await?;
println!("Number of matching documents: {}", ct);
Number of matching documents: 10
let ct = my_coll
.count_documents(doc! { "name": doc! { "$regex": "Sunset" } })
.run()?;
println!("Number of matching documents: {}", ct);
Number of matching documents: 10

您可以修改 count_documents() 方法的行为,方法是在 awaitrun() 方法调用之前将选项方法链接到 count_documents() 调用。下表描述了可设立自定义计数操作的选项:

选项
说明

collation()

用于操作的排序规则。类型:
Collation

hint()

用于操作的索引。
类型Hint

comment()

要添加到操作的注释。
类型Bson

limit()

要计数的最大文档数。此值必须是正整数。类型:
u64

max_time()

操作可以运行的最长时间(毫秒)。
类型Duration

read_concern()

用于操作的读关注(read concern)。
类型ReadConcern

skip()

在对文档进行计数之前要跳过的文档数。
类型u64

selection_criteria()

读取偏好(read preference)和用于操作的标签。
类型SelectionCriteria

您可以通过在调用 awaitrun() 方法之前调用 estimated_document_count() 方法来检索集合中文档数量的检索值。该方法根据集合元数据估计文档数量,这可能比执行精确计数更快。

以下示例估计集合中的文档数。选择 AsynchronousSynchronous标签页,查看每个运行时的相应代码:

let ct = my_coll.estimated_document_count().await?;
println!("Number of documents: {}", ct);
Number of documents: 25216
let ct = my_coll.estimated_document_count().run()?;
println!("Number of documents: {}", ct);
Number of documents: 25216

您可以通过将选项方法链接到 estimated_document_count() 调用来修改 estimated_document_count() 方法的行为。下表描述了可用于自设立估计计数操作的选项:

选项
说明

max_time()

操作可以运行的最长时间(毫秒)。
类型Duration

comment()

要添加到操作的注释。
类型Bson

read_concern()

用于操作的读关注(read concern)。
类型ReadConcern

selection_criteria()

读取偏好(read preference)和用于操作的标签。
类型SelectionCriteria

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: