Menu Docs
Página inicial do Docs
/ / /
Controlador Node.js
/ / /

Retrieve Distinct Values

Nesta página

  • Visão geral
  • Documentos de amostra
  • distinto
  • Parâmetro do campo do documento
  • Exemplo
  • Parâmetro de query
  • Parâmetro de opções
  • Informações adicionais
  • Documentação da API

Utilize o método distinct() para recuperar todos os valores distintos para um campo especificado em uma collection.

Para seguir os exemplos deste guia, utilize o seguinte trecho de código para inserir documento que descrevem restaurantes na collection 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 .

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 resultados

  • Um parâmetro options para definir regras de agrupamento

Passe o nome do campo do documento para retornar uma lista dos valores exclusivos do campo.

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" ]

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 consulta.

O exemplo seguinte 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);
}

Neste caso, o filtro de query corresponde a todos os valores de bairro, exceto para "Brooklyn". Isso impede que distinct() produza um valor cuisine , "Middle Eastern". O código gera os seguintes valores:

[ "Brazilian", "Chinese", "German", "Italian" ]

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 {}.

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" ]

Se você não especificar o campo collation , a ordem de saída seguirá 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" ]

Para obter um exemplo executável de recuperação de valores distintos, consulte Recuperar valores distintos de um campo.

Para saber mais sobre o distinct() método e seus parâmetros, acesse a documentação da API.

Voltar

Acessar dados de um cursor