Menu Docs

Página inicial do DocsDesenvolver aplicaçõesDrivers PythonPyMongo

Recuperar valores de campo distintos

Nesta página

  • Visão geral
  • Dados de amostra
  • distinct() Método
  • Recuperar valores distintos em uma collection
  • Recuperar valores distintos em documentos especificados
  • Modificar comportamento distinto
  • Documentação da API

Dentro de uma coleção, documentos diferentes podem conter valores diferentes para um único campo. Por exemplo, um documento restaurant tem um valor borough de "Manhattan" e outro tem um valor borough de "Queens". Com o PyMongo, você pode recuperar todos os valores distintos que um campo contém em vários documentos em uma collection.

Os exemplos neste guia usam a collection sample_restaurants.restaurants dos conjuntos de dados de amostra do Atlas. Para saber como criar um MongoDB Atlas cluster gratuito e carregar os conjuntos de dados de amostra, consulte Introdução ao PyMongo.

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

O exemplo seguinte recupera os valores distintos do campo borough na coleção restaurants :

results = restaurants.distinct("borough")
for restaurant in results:
print(restaurant)
Bronx
Brooklyn
Manhattan
Missing
Queens
Staten Island

Os resultados mostram cada valor distinto que aparece no campo borough em todos os documentos da coleção. 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 método distinct() 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 do Atlas Search usados para corresponder a documentos em uma operação. Para obter mais informações sobre como criar um filtro de query, consulte 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 "Italian":

results = restaurants.distinct("borough", {
"cuisine": "Italian"
})
for restaurant in results:
print(restaurant)
Bronx
Brooklyn
Manhattan
Queens
Staten Island

O método distinct() aceita parâmetros opcionais, que representam opções que você pode utilizar para configurar a operação. Se você não especificar nenhuma opção, o driver não personalizará a operação.

A tabela a seguir descreve as opções que você pode definir para personalizar distinct():

Propriedade
Descrição
filter
A query filter that specifies the documents to retrieve distinct values from.
session
An instance of ClientSession.
comment
A comment to attach to the operation.
maxTimeMS
The maximum amount of time to allow the operation to run, in milliseconds.
collation
An instance of Collation.

O exemplo a seguir recupera os valores distintos do campo name para todos os documentos que têm um valor de campo borough de "Bronx" e um valor de campo cuisine de "Pizza". Ele também usa a opção comment para adicionar um comentário à operação.

results = restaurants.distinct("name",
{ "borough": "Bronx",
"cuisine": "Pizza" },
comment="Bronx pizza restaurants"
)
$1.25 Pizza
18 East Gunhill Pizza
2 Bros
Aenos Pizza
Alitalia Pizza Restaurant
...

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

← Contagem de documentos