计算文档
您可以通过在 Collection
实例上调用以下方法之一来计算collection中的文档数量:
count_documents() :计算与查询过滤匹配的文档数量。要学习;了解有关创建查询筛选器的更多信息,请参阅《 指定查询》指南。
estimated_document_count() :使用集合元数据估计集合中的文档总数。
每个方法都会以u64
实例的形式返回该计数。
注意
如果没有向count_documents()
方法传递筛选器,MongoDB 将计算collection中的文档总数。
例子
此示例对数据库sample_restaurants
的collectionrestaurants
中的文档进行计数。
以下代码首先使用estimated_document_count()
方法计算collection中的文档总数。然后,该示例使用count_documents()
方法计算与查询筛选器匹配的文档数量。 筛选器匹配字段name
的值包含字符串"Sunset"
的文档:
选择 Asynchronous或Synchronous标签页,查看每个运行时的相应代码:
use std::env; use mongodb::{ bson::doc, Client, Collection }; use bson::Document; async fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri).await?; let my_coll: Collection<Document> = client .database("sample_restaurants") .collection("restaurants"); let ct = my_coll.estimated_document_count().await?; println!("Number of documents: {}", ct); let ct = my_coll.count_documents(doc! { "name": doc! { "$regex": "Sunset" } }).await?; println!("Number of matching documents: {}", ct); Ok(()) }
// Your values might differ Number of documents: 25216 Number of matching documents: 10
use std::env; use mongodb::{ bson::{ Document, doc }, sync::{ Client, Collection } }; fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let client = Client::with_uri_str(uri)?; let my_coll: Collection<Document> = client .database("sample_restaurants") .collection("restaurants"); let ct = my_coll.estimated_document_count().run()?; println!("Number of documents: {}", ct); let ct = my_coll .count_documents(doc! { "name": doc! { "$regex": "Sunset" } }) .run()?; println!("Number of matching documents: {}", ct); Ok(()) }
// Your values might differ Number of documents: 25216 Number of matching documents: 10