Docs Menu
Docs Home
/ /

Recuperar valores distintos de un campo

En esta guía, puede aprender a recuperar una lista de valores distintos para un campo en una colección llamando al método distinct() Método en un objeto MongoCollection. Pase el nombre del campo del documento como primer parámetro y la clase que desea usar para los resultados como 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 MongoCursor.

El siguiente fragmento recupera una lista de valores distintos para el campo de documento year de la colección movies. Utiliza un filtro de consulta para encontrar películas que incluyan "Carl Franklin" como uno de los valores de la matriz directors.

Nota

Este ejemplo se conecta a una instancia de MongoDB mediante una URI de conexión. Para obtener más información sobre cómo conectarse a su instancia de MongoDB, consulte 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ía ver un resultado que informa cada año distinto para todas las películas en las que Carl Franklin fue incluido como director, que se parece 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:

  • distinto() Documentación de la API

  • Documentación de la API deDistinctIterable

  • Entrada manual del servidor denotación de puntos

  • Documentación de la APIMongoIterable

Volver

Contabilizar documentos

En esta página