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
/ /

Recuperar valores de campo distintos

Neste guia, você pode aprender como usar o driver Rust para recuperar os valores distintos de um campo especificado em uma coleção.

Dentro de uma coleção, os documentos podem conter valores diferentes para um único campo. Por exemplo, um documento em uma coleção restaurants tem um valor borough de "Manhattan" e outro tem um valor borough de "Queens". Você pode usar o driver Rust para recuperar os valores "Manhattan", "Queens" e todos os outros valores exclusivos no campo borough em todos os documentos na collection restaurants.

Os exemplos neste guia utilizam a coleção do restaurants no banco de dados do sample_restaurants a partir do conjuntos de dados de amostra Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o MongoDB Get Started guia.

Você pode acessar os documentos na coleção restaurants como instâncias do tipo Document ou um tipo de dados personalizado. Para especificar qual tipo de dados representa os dados da coleção, substitua o parâmetro de tipo <T> por um dos seguintes valores:

  • <Document>: representa documentos de coleção como documentos BSON

  • <Restaurant>: Representa documentos de coleção como instâncias da estrutura Restaurant, definida nos exemplos de código

Para recuperar os valores distintos de um campo especificado, chame o método distinct() em uma Collection instância e passe o nome do campo para o qual você deseja encontrar valores distintos.

O distinct() método retorna a lista de valores distintos como um Vec<Bson> objeto, um vetor de valores Bson.

O exemplo a seguir recupera os valores distintos do campo borough na coleção restaurants.

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

let boroughs = my_coll.distinct("borough", None).await?;
println!("List of field values for 'borough':");
for b in boroughs {
println!("{:?}", b);
}
List of field values for 'borough':
String("Bronx")
String("Brooklyn")
String("Manhattan")
String("Missing")
String("Queens")
String("Staten Island")
let boroughs = my_coll.distinct("borough", None).run()?;
println!("List of field values for 'borough':");
for b in boroughs {
println!("{:?}", b);
}
List of field values for 'borough':
String("Bronx")
String("Brooklyn")
String("Manhattan")
String("Missing")
String("Queens")
String("Staten Island")

A operação retorna um vetor que armazena cada valor de campo borough distinto. Embora vários documentos tenham o mesmo valor no campo borough, cada valor aparece nos resultados apenas uma vez.

Você pode fornecer um filtro de query para o distinct() método para localizar os valores de campo distintos em um subconjunto de documentos em uma coleção. Um filtro de query é uma expressão que especifica os critérios de pesquisa usados para corresponder a documentos em uma operação. Por exemplo, você pode usar o distinct() método para localizar valores de campo distintos a partir de somente um subconjunto de documentos correspondentes.

Dica

Para saber mais sobre como criar um filtro de query, consulte o guia Especificar uma query.

O exemplo a seguir recupera os valores distintos do campo borough para todos os documentos que têm um valor de campo cuisine de "Turkish".

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

let filter = doc! { "cuisine": "Turkish" };
let boroughs = my_coll.distinct("borough", filter).await?;
println!("List of field values for 'borough':");
for b in boroughs {
println!("{:?}", b);
}
List of field values for 'borough':
String("Brooklyn")
String("Manhattan")
String("Queens")
String("Staten Island")
let filter = doc! { "cuisine": "Turkish" };
let boroughs = my_coll.distinct("borough", filter).run()?;
println!("List of field values for 'borough':");
for b in boroughs {
println!("{:?}", b);
}
List of field values for 'borough':
String("Brooklyn")
String("Manhattan")
String("Queens")
String("Staten Island")

Você pode modificar o comportamento do método distinct() encadeando um ou mais 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 distinta:

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

max_time()

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

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 o método distinct(), consulte a documentação API.

Voltar

Contagem de documentos

Nesta página