Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Recuperar valores distintos de um campo

Neste guia, você pode aprender como recuperar uma lista de valores distintos para um campo em uma coleção ligando para o método distinct() em um objeto MongoCollection. Passe o nome do campo do documento como o primeiro parâmetro e a classe que você deseja usar para os resultados como o segundo parâmetro, conforme mostrado abaixo:

collection.distinct("countries", String.class);

Você pode especificar um campo no documento ou dentro de um documento incorporado usando a notação de ponto. A chamada de método abaixo gera cada valor distinto do campo wins no documento incorporado de awards:

collection.distinct("awards.wins", Integer.class);

Opcionalmente, você pode passar um filtro de query para o método a fim de limitar o conjunto de documentos dos quais a instância do MongoDB recupera valores distintos, como segue:

collection.distinct("type", Filters.eq("languages", "French"), String.class);

O método distinct() gera um objeto que implementa a interface do DistinctIterable. Essa interface contém métodos para acessar, organizar e cruzar os resultados. Ela também contém métodos da interface principal, MongoIterable, como first(), que gera o primeiro resultado, e cursor(), que gera uma instância de MongoCursor.

O seguinte trecho recupera uma lista de valores distintos para o campo de documento year da collection movies. Ele usa um filtro de query para corresponder a filmes que incluem "Carl Franklin" como um dos valores na array directors.

Observação

Esse exemplo se conecta a uma instância do MongoDB usando um URI de conexão. Para saber mais sobre como se conectar à sua instância do MongoDB, consulte o Guia de conexão.

// Retrieves distinct values of a field by using the Java driver
package usage.examples;
import org.bson.Document;
import com.mongodb.MongoException;
import com.mongodb.client.DistinctIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
public class Distinct {
public static void main(String[] args) {
// Replace the uri string with your MongoDB deployment's connection string
String uri = "<connection string uri>";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase database = mongoClient.getDatabase("sample_mflix");
MongoCollection<Document> collection = database.getCollection("movies");
// Retrieves the distinct values of the "year" field present in documents that match the filter
DistinctIterable<Integer> docs = collection.distinct("year", Filters.eq("directors", "Carl Franklin"), Integer.class);
MongoCursor<Integer> results = docs.iterator();
// Prints the distinct "year" values
while(results.hasNext()) {
System.out.println(results.next());
}
}
}
}

Ao executar o exemplo, você verá a saída que relata cada ano distinto de todos os filmes que Carl Franklin foi inserido como diretor, que se parece com o seguinte:

1992
1995
1998
...

Dica

Legacy API

Se você estiver usando a API legado, consulte a seção de perguntas frequentes do guia da API herdada para saber quais alterações devem ser feitas nesse exemplo de código.

Para obter mais informações sobre as classes e métodos mencionados nesta página, consulte os seguintes recursos:

Nesta página