Overview
En esta guía, puedes aprender cómo especificar una query en el driver de Java de MongoDB.
La mayoría de las operaciones CRUD permiten restringir el conjunto de documentos coincidentes especificando los criterios de coincidencia en un filtro de query. Los filtros de query contienen uno o más operadores del query 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 del query con ejemplos de cómo usarlos:
Los ejemplos de esta guía utilizan los siguientes documentos en el
paint_purchases colecció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 en función de 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 de".
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()));
Lo siguiente 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 utilizando lógica aplicada a los resultados de operadores a nivel 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()));
Lo siguiente 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 arreglo consultan datos en función del valor o la cantidad de elementos en un campo de arreglo.
En el siguiente ejemplo, se utiliza el método Filters.size() para buscar 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()));
Lo siguiente 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 en función de la presencia o el tipo de un campo.
El siguiente ejemplo utiliza el método Filters.exists() para 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()));
Lo siguiente 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 lógica de alto nivel, como expresiones regulares y consultas de texto.
El siguiente ejemplo utiliza el método Filters.regex() para coincidir documentos que tengan 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()));
Lo siguiente 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, consulta las siguientes entradas del manual del servidor: