Visão geral
Neste guia, você pode aprender como usar o driver Rust para recuperar uma contagem precisa e estimada do número de documentos em uma coleção. O método count_documents() retorna o número exato de documentos que correspondem a um filtro de queries ou que existem em uma coleção, e o método estimated_document_count() retorna o número estimado de documentos em uma coleção.
Dados de amostra
Os exemplos neste guia utilizam a coleção do restaurants no banco de dados do sample_restaurants a partir do conjunto de dados de amostra do Atlas. Para acessar essa coleção a partir do seu aplicativo Rust, crie um Client que se conecte a um Atlas cluster e atribua os seguintes valores à sua variável my_coll.
Selecione a guia 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 guia Introdução ao driver Rust.
Os exemplos deste guia utilizam o seguinte Restaurant estruturado como um modelo para documentos na coleção restaurants:
struct Restaurant { name: String, cuisine: String, }
Recuperar uma contagem precisa
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 queries para o método count_documents().
Para saber mais sobre como especificar uma query, consulte o guia Especificar uma Consulta .
Contagem de todos os documentos
Para retornar uma contagem de todos os documentos na coleção, 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
Contagem de documentos específicos
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
Personalizar comportamento de contagem
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 |
|---|---|
| O agrupamento a ser usado para a operação. |
| O índice a ser usado para a operação. |
| O comentário a ser anexado à operação. |
| O número máximo de documentos para contar. Esse valor deve ser um número inteiro positivo. |
| A quantidade máxima de tempo em milissegundos que a operação pode ser executada. |
| A read concern a ser usada para a operação. |
| O número de documentos a serem ignorados antes de contar os documentos. |
| A preferência de leitura e as tags a serem usadas para a operação. |
Recuperar uma contagem estimada
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 coleção, 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 coleção. 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
Personalizar comportamento de contagem estimada
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 |
|---|---|
| A quantidade máxima de tempo em milissegundos que a operação pode ser executada. |
| O comentário a ser anexado à operação. |
| A read concern a ser usada para a operação. |
| A preferência de leitura e as tags a serem usadas para a operação. |
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: