Retrieve Distinct Values
Nesta página
Visão geral
Utilize o método distinct()
para recuperar todos os valores distintos para um campo especificado em uma collection.
Documentos de amostra
Para acompanhar os exemplos deste guia, use o seguinte trecho de código para inserir documentos que descrevem restaurantes na coleção myDB.restaurants
:
const myDB = client.db("myDB"); const myColl = myDB.collection("restaurants"); await myColl.insertMany([ { "_id": 1, "restaurant": "White Bear", "borough": "Queens", "cuisine": "Chinese" }, { "_id": 2, "restaurant": "Via Carota", "borough": "Manhattan", "cuisine": "Italian" }, { "_id": 3, "restaurant": "Borgatti's", "borough": "Bronx", "cuisine": "Italian" }, { "_id": 4, "restaurant": "Tanoreen", "borough": "Brooklyn", "cuisine": "Middle Eastern" }, { "_id": 5, "restaurant": "Äpfel", "borough": "Queens", "cuisine": "German" }, { "_id": 6, "restaurant": "Samba Kitchen", "borough": "Manhattan", "cuisine": "Brazilian" }, ]);
Observação
Sua operação de query pode retornar uma referência a um cursor que contém documentos correspondentes. Para saber como examinar os dados armazenados no cursor, consulte apágina Fundamentos do cursor .
distinto
O método distinct()
exige um campo de documento como parâmetro. Você pode especificar os seguintes parâmetros opcionais para ajustar a saída do método:
Um parâmetro
query
para refinar seus resultadosUm parâmetro
options
para definir regras de agrupamento
Parâmetro do campo do documento
Passe o nome do campo do documento para retornar uma lista dos valores exclusivos do campo.
Exemplo
Os valores de distrito "Queens
" e "Manhattan
" aparecem mais de uma vez nos documentos de exemplo. No entanto, o exemplo seguinte recupera os valores únicos do campo borough
:
// specify "borough" as the field to return values for const cursor = myColl.distinct("borough"); for await (const doc of cursor) { console.dir(doc); }
Este código gera os seguintes valores borough
:
[ "Bronx", "Brooklyn", "Manhattan", "Queens" ]
Parâmetro de query
Você pode especificar um parâmetro de query para retornar valores exclusivos para documentos que correspondem à sua query.
Visite Especifique uma consulta para obter mais informações sobre como construir um filtro de queries.
Exemplo
O exemplo a seguir gera os valores distintos do campo cuisine
, mas exclui restaurantes em "Brooklyn
":
// exclude Brooklyn restaurants from the output const query = { borough: { $ne: "Brooklyn" }}; // find the filtered distinct values of "cuisine" const cursor = myColl.distinct("cuisine", query); for await (const doc of cursor) { console.dir(doc); }
Nesse caso, o filtro de query corresponde a todos os valores de bairro, exceto "Brooklyn
". Isso impede que distinct()
produza um valor cuisine
, "Middle Eastern
". O código gera os seguintes valores:
[ "Brazilian", "Chinese", "German", "Italian" ]
Parâmetro de opções
Você pode especificar o agrupamento para o método distinct()
definindo um campo collation
como um parâmetro options
. Esse campo permite definir regras regionais para ordenação e comparações de strings.
Consulte Agrupamentos para obter instruções sobre como aplicar agrupamentos.
Observação
Ao utilizar o parâmetro options
, você também deve especificar um parâmetro query
. Se você não quiser usar um filtro de query, defina a query como {}
.
Exemplo
O exemplo a seguir usa um campo collation
para especificar as convenções de ordenação do idioma alemão ao gerar os valores restaurant
distintos:
// define an empty query document const query = {}; // specify German string ordering conventions const options = { collation: { locale: "de" }}; const cursor = myColl.distinct("restaurant", query, options); for await (const doc of cursor) { console.dir(doc); }
Nesse caso, as convenções alemãs de ordenação de strings colocam as palavras que começam com "Ä" antes daquelas que começam com "B". O código gera o seguinte:
[ "Äpfel", "Borgatti's", "Samba Kitchen", "Tanoreen", "Via Carota", "White Bear" ]
Sem especificar um campo collation
, a ordem de saída seguiria as regras de agrupamento binárias padrão. Essas regras colocam as palavras que começam com "Ä" depois daquelas com as primeiras letras não destacadas:
[ "Borgatti's", "Samba Kitchen", "Tanoreen", "Via Carota", "White Bear", "Äpfel" ]
Informações adicionais
Para obter um exemplo executável de recuperação de valores distintos, consulte Recuperar valores distintos de um campo.
Documentação da API
Para saber mais sobre o método distinct()
e seus parâmetros, você pode visitar a documentação da API.