Docs Menu
Docs Home
/ /

Especifica un query

En esta guía, puede aprender a especificar una consulta en el controlador Java de MongoDB.

La mayoría de las operaciones CRUD permiten restringir el conjunto de documentos coincidentes mediante la especificación de criterios de coincidencia en un filtro de consulta. Los filtros de consulta contienen uno o más operadores de consulta que se aplican a campos específicos y determinan qué documentos se incluirán en el conjunto de resultados.

En esta página, cubrimos los siguientes operadores de consulta con ejemplos sobre cómo usarlos:

  • Operadores de comparación

  • Operadores lógicos

  • Operadores de arreglos

  • Operadores de elementos

  • Operadores de evaluación

Los ejemplos de esta guía utilizan los siguientes documentos en el paint_purchases recopilación:

{ "_id": 1, "color": "red", "qty": 9, "vendor": ["A", "E"] }
{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 3, "color": "blue", "qty": 5, "vendor": ["A", "E"] }
{ "_id": 4, "color": "white", "qty": 6, "vendor": ["D"], "rating": 9 }
{ "_id": 5, "color": "yellow", "qty": 4, "vendor": ["A", "B"] }
{ "_id": 6, "color": "pink", "qty": 3, "vendor": ["C"] }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

Los operadores de comparación consultan datos basándose en comparaciones con valores de una colección. Los operadores de comparación comunes incluyen gt() para comparaciones "mayores que", lte() para comparaciones "menores o iguales que" y ne() para comparaciones "diferentes a".

El siguiente ejemplo utiliza el método Filters.gt() para emparejar todos los documentos donde el valor de qty es mayor que 7 en la colección paint_purchases:

Bson filter = Filters.gt("qty", 7);
// Retrieves documents that match the filter and prints them as JSON
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

A continuación se muestra el resultado de la consulta anterior:

{ "_id": 1, "color": "red", "qty": 9, "vendor": ["A", "E"] }
{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }

Los operadores lógicos consultan datos mediante la lógica aplicada a los resultados de los operadores de campo. Los operadores lógicos comunes incluyen and(), donde todos los operadores deben ser verdaderos, y or(), donde al menos uno de los operadores debe ser verdadero.

El siguiente ejemplo utiliza el método Filters.and() para hacer coincidir documentos donde el valor de qty es menor o igual a 5 y el valor de color no es "pink" en la colección paint_purchases:

Bson filter = Filters.and(Filters.lte("qty", 5), Filters.ne("color", "pink"));
// Retrieves documents that match the filter and prints them as JSON
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

A continuación se muestra el resultado de la consulta anterior:

{ "_id": 3, "color": "blue", "qty": 5, "vendor": ["A", "E"] }
{ "_id": 5, "color": "yellow", "qty": 4, "vendor": ["A", "B"] }

Los operadores de matriz consultan datos según el valor o la cantidad de elementos en un campo de matriz.

El siguiente ejemplo utiliza el método Filters.size() para hacer coincidir documentos donde el tamaño de la lista vendor es 3 en la colección paint_purchases:

Bson filter = Filters.size("vendor", 3);
// Retrieves documents that match the filter and prints them as JSON
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

A continuación se muestra el resultado de la consulta anterior:

{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

Los operadores de elementos consultan datos según la presencia o el tipo de un campo.

El siguiente ejemplo utiliza el método Filters.exists() para hacer coincidir documentos que tienen un rating en la colección paint_purchases:

Bson filter = Filters.exists("rating");
// Retrieves documents that match the filter and prints them as JSON
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

A continuación se muestra el resultado de la consulta anterior:

{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 4, "color": "white", "qty": 6, "vendor": ["D"], "rating": 9 }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }

Los operadores de evaluación consultan datos sobre una lógica de nivel superior, como consultas de texto y expresiones regulares.

El siguiente ejemplo utiliza el método Filters.regex() para hacer coincidir documentos que tienen un color que termina con la letra "k" en la colección paint_purchases:

Bson filter = Filters.regex("color", "k$");
// Retrieves documents that match the filter and prints them as JSON
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

A continuación se muestra el resultado de la consulta anterior:

{ "_id": 6, "color": "pink", "qty": 3, "vendor": ["C"] }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

Para obtener más información sobre los operadores mencionados en esta guía, consulte las siguientes entradas del Manual del servidor:

Volver

Insertar documentos

En esta página