Overview
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:
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"] }
Operadores de comparación
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 }
Operadores lógicos
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"] }
Operadores de arreglos
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"] }
Operadores de elementos
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 }
Operadores de evaluación
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: