Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Recuperar valores distintos de un campo

En esta guía, puedes aprender cómo recuperar una lista de valores distintos para un campo en una colección utilizando el distinct() método en un objeto MongoCollection. Pasa el nombre del campo del documento como el primer parámetro y la clase que quieres utilizar para los resultados como el segundo parámetro, como se muestra a continuación:

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

Puedes especificar un campo en el documento o uno dentro de un documento incrustado usando la notación de punto. La siguiente llamada de método devuelve cada valor distinto del campo wins en el documento incrustado awards:

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

Opcionalmente, puede pasar un filtro de consulta al método para limitar el conjunto de documentos de los cuales su instancia de MongoDB recupera valores distintos de la siguiente manera:

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

El método distinct() devuelve un objeto que implementa la interfaz DistinctIterable. Esta interfaz contiene métodos para acceder, organizar y recorrer los resultados. También hereda métodos de su interfaz principal, MongoIterable, como first() que devuelve el primer resultado y cursor() que devuelve una instancia de un MongoCursor.

El siguiente snippet recupera una lista de valores distintos para el campo de documento year de la colección movies. Utiliza un filtro de query para hacer coincidir películas que incluyan "Carl Franklin" como uno de los valores en el arreglo directors.

Nota

Este ejemplo se conecta a una instancia de MongoDB utilizando un URI de conexión. Para obtener más información sobre cómo conectarse a tu instancia de MongoDB, consulta el guía de conexión.

// 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());
}
}
}
}

Al ejecutar el ejemplo, deberías ver una salida que informa de cada año distinto para todas las películas en las que Carl Franklin participó como director, lo que se asemeja a lo siguiente:

1992
1995
1998
...

Tip

Legacy API

Si usas la API heredada, consulta la sección de preguntas frecuentes de la guía de la API heredada para conocer los cambios que debes realizar en este ejemplo de código.

Para obtener más información sobre las clases y métodos mencionados en esta página, consulte los siguientes recursos:

  • distinct() Documentación de la API

  • Documentación de la API de DistinctIterable

  • Entrada manual del servidor denotación de puntos

  • Documentación de la APIMongoIterable

Volver

Contabilizar documentos

En esta página