Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/ /

Contagem de documentos

Neste guia, você pode aprender como usar o driver Rust para recuperar uma contagem precisa e estimada do número de documentos em uma collection. O método count_documents() retorna o número exato de documentos que correspondem a um filtro de query ou que existem em uma collection, e o método estimated_document_count() retorna o número estimado de documentos em uma collection.

Os exemplos neste guia utilizam a restaurants coleção do sample_restaurants no banco de dados do a partir do conjunto de dados de amostra do Atlas . Para acessar essa coleção a partir do seu aplicação Rust, crie um Client que se conecte a um Atlas cluster e atribua os seguintes valores à sua my_coll variável.

Selecione a aba Asynchronous ou Synchronous para ver o código correspondente para cada tempo de execução:

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");

Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guiade Introdução ao driver Rust.

Os exemplos deste guia utilizam o seguinte Restaurant estruturado como um modelo para documentos na coleção restaurants:

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

Use o método count_documents() para contar o número de documentos que estão em uma coleção. Para contar o número de documentos que correspondem a um critério de pesquisa específico, passe um documento de filtro de query para o método count_documents().

Para saber mais sobre como especificar uma query, consulte o guia Especificar uma Consulta .

Para retornar uma contagem de todos os documentos na collection, passe um documento filtro vazio para o método count_documents(), conforme mostrado no exemplo a seguir. Selecione a aba Asynchronous ou Synchronous para ver o código correspondente para cada tempo de execução:

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

Para retornar uma contagem de documentos que correspondam a critérios de pesquisa específicos, passe seu documento de filtro de query para o método count_documents() .

O exemplo a seguir conta o número de documentos nos quais o valor do campo name inclui a string "Sunset". Selecione a aba Asynchronous ou Synchronous para ver o código correspondente para cada tempo de execução:

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

Você pode modificar o comportamento do método count_documents() encadeando métodos de opção à sua chamada count_documents() antes da chamada de método await ou run(). A tabela a seguir descreve as opções que você pode definir para personalizar a operação de contagem:

Opção
Descrição

collation()

The collation to use for the operation.
Type: Collation

hint()

The index to use for the operation.
Type: Hint

comment()

The comment to attach to the operation.
Type: Bson

limit()

The maximum number of documents to count. This value must be a positive integer.
Type: u64

max_time()

The maximum amount of time in milliseconds that the operation can run.
Type: Duration

read_concern()

The read concern to use for the operation.
Type: ReadConcern

skip()

The number of documents to skip before counting documents.
Type: u64

selection_criteria()

The read preference and tags to use for the operation.
Type: SelectionCriteria

Você pode recuperar uma estimativa do número de documentos em uma coleção chamando o método estimated_document_count() antes da chamada de método await ou run(). O método estima a quantidade de documentos com base nos metadados da collection, o que pode ser mais rápido do que realizar uma contagem precisa.

O exemplo a seguir estima o número de documentos em uma collection. Selecione a aba Asynchronous ou Synchronous para ver o código correspondente para cada tempo de execução:

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

Você pode modificar o comportamento do método estimated_document_count() encadeando métodos de opções à sua chamada estimated_document_count(). A tabela a seguir descreve as opções que você pode definir para personalizar a operação de contagem estimada:

Opção
Descrição

max_time()

The maximum amount of time in milliseconds that the operation can run.
Type: Duration

comment()

The comment to attach to the operation.
Type: Bson

read_concern()

The read concern to use for the operation.
Type: ReadConcern

selection_criteria()

The read preference and tags to use for the operation.
Type: SelectionCriteria

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Especifique campos a serem retornados

Nesta página