Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Especifica un query

En esta guía, puedes aprender cómo especificar una query usando el driver Scala.

Se puede refinar el conjunto de documentos que una query retorna creando un filtro de query. Un filtro de query es una expresión que especifica el criterio de búsqueda que MongoDB usa para hacer coincidir documentos en una operación de lectura o escritura.

Puedes utilizar operadores del query para expresar criterios de coincidencia más complejos en un filtro de query. El driver de Scala incluye una clase Filters que proporciona métodos asistente para aplicar operadores del query.

Tip

Para ver una lista completa de los métodos asistentes de Filters, consulte la Filtros documentación de la API.

Los ejemplos en esta guía ejecutan operaciones en la colección fruits, que contiene documentos que representan frutas. El siguiente ejemplo de código muestra cómo crear una base de datos y una colección, luego insertar los documentos de muestra en tu colección:

val uri: String = "<connection string>"
val client: MongoClient = MongoClient(uri)
val database: MongoDatabase = client.getDatabase("db")
val collection: MongoCollection[Document] = database.getCollection("fruits")
// Inserts documents representing fruits
val fruits: Seq[Document] = Seq(
Document("_id" -> 1, "name" -> "apples", "qty" -> 5, "rating" -> 3, "color" -> "red", "type" -> Seq("fuji", "honeycrisp")),
Document("_id" -> 2, "name" -> "bananas", "qty" -> 7, "rating" -> 4, "color" -> "yellow", "type" -> Seq("cavendish")),
Document("_id" -> 3, "name" -> "oranges", "qty" -> 6, "rating" -> 2, "type" -> Seq("naval", "mandarin")),
Document("_id" -> 4, "name" -> "pineapples", "qty" -> 3, "rating" -> 5, "color" -> "yellow")
)
val result = collection.insertMany(fruits)
.subscribe((result: InsertManyResult) => println(result))

Las queries de valor literal retornan documentos que tienen una coincidencia exacta con su filtro de query.

El siguiente ejemplo especifica un filtro de query como parámetro para el método find(). El código devuelve todos los documentos en los que el valor del campo color es "yellow":

val filter = equal("color", "yellow")
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 2, "name": "bananas", "qty": 7, "rating": 4, "color": "yellow", "type": ["cavendish"]}
{"_id": 4, "name": "pineapples", "qty": 3, "rating": 5, "color": "yellow"}

Nota

Encuentre todos los documentos

Para buscar todos los documentos en una colección, llamá al método find() sin pasar ningún parámetro:

collection.find()

Los operadores de comparación evalúan el valor de un campo de documento en relación con un valor especificado en tu filtro de query. La siguiente lista define los operadores de comparación comunes y sus correspondientes métodos asistentes Filters:

operador de la query
Método asistente
Descripción

$gt

gt()

Coincide con los documentos en los que el valor del campo dado es mayor que el valor especificado.

$lte

lte()

Coincide con los documentos en los que el valor del campo dado es menor o igual que el valor especificado.

$ne

ne()

Coincide con los documentos en los que el valor del campo dado no es igual al valor especificado.

Tip

Para ver una lista completa de operadores de comparación, consulta la guía Operadores de consulta de comparación en el manual del MongoDB Server.

El siguiente ejemplo pasa un filtro de query al método find() y utiliza el método gt() para aplicar el operador de comparación $gt. El código devuelve todos los documentos en los que el valor del campo rating es superior a 2:

val filter = gt("rating", 2)
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 1, "name": "apples", "qty": 5, "rating": 3, "color": "red", "type": ["fuji", "honeycrisp"]}
{"_id": 2, "name": "bananas", "qty": 7, "rating": 4, "color": "yellow", "type": ["cavendish"]}
{"_id": 4, "name": "pineapples", "qty": 3, "rating": 5, "color": "yellow"}

Los operadores lógicos coinciden con los documentos utilizando la lógica aplicada a los resultados de dos o más conjuntos de expresiones. La siguiente tabla describe cada operador lógico y su correspondiente método asistente Filters:

operador de la query
Método asistente
Descripción

$and

and()

Coincide con los documentos que cumplen las condiciones de todas las cláusulas

$or

or()

Coincide con los documentos que cumplen las condiciones de una cláusula

$nor

nor()

Coincide con los documentos que no cumplen las condiciones de ninguna cláusula

$not

not()

Coincide con los documentos que no coinciden con la expresión

Tip

Para obtener más información sobre los operadores lógicos, consulta la guía Operadores de consulta lógica en el manual del MongoDB Server.

En el siguiente ejemplo, se pasa un filtro de query al método find() y se utiliza el or() método para aplicar el operador lógico $or. El código devuelve todos los documentos en los que el campo qty tenga un valor mayor que 5 o el campo color tenga "yellow":

val filter = or(gt("qty", 5), equal("color", "yellow"))
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 2, "name": "bananas", "qty": 7, "rating": 4, "color": "yellow", "type": ["cavendish"]}
{"_id": 3, "name": "oranges", "qty": 6, "rating": 2, "type": ["naval", "mandarin"]}
{"_id": 4, "name": "pineapples", "qty": 3, "rating": 5, "color": "yellow"}

Los operadores de arreglos emparejan documentos según el valor o la cantidad de elementos en un campo de arreglo. La siguiente tabla describe cada operador de arreglo y su correspondiente método asistente Filters:

operador de la query
Método asistente
Descripción

$all

all()

Coincide con documentos que tienen arreglos que contienen todos los elementos de la query

$elemMatch

elemMatch()

Coincide con los documentos si un elemento de su campo de arreglo cumple todas las condiciones de la query

$size

size()

Coincide con documentos que tienen arreglos de un tamaño especificado

Tip

Para obtener más información sobre los operadores de arreglo, consulta la guía Operadores del query de arreglo en el manual de MongoDB Server.

El siguiente ejemplo pasa un filtro de query al método find() y utiliza el método size() para aplicar el operador de arreglo $size. El código devuelve todos los documentos en los que el campo de arreglo type contiene 2 elementos:

val filter = size("type", 2)
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 1, "name": "apples", "qty": 5, "rating": 3, "color": "red", "type": ["fuji", "honeycrisp"]}
{"_id": 3, "name": "oranges", "qty": 6, "rating": 2, "type": ["naval", "mandarin"]}

Los operadores de elementos consultan query según la presencia o el tipo de un campo. La siguiente tabla describe cada operador de elemento y su correspondiente método auxiliar Filters:

operador de la query
Método asistente
Descripción

$exists

exists()

Coincide con los documentos que tienen el campo especificado

$type

type()

Coincide con documentos si un campo tiene el tipo especificado

Tip

Para saber más sobre los operadores de elementos, consulta la guía Operadores de consulta de elementos en el manual de MongoDB Server.

El siguiente ejemplo pasa un filtro de query al método find() y utiliza el método exists() para aplicar el operador de elemento $exists. El código devuelve todos los documentos que tienen un campo color:

val filter = exists("color")
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 1, "name": "apples", "qty": 5, "rating": 3, "color": "red", "type": ["fuji", "honeycrisp"]}
{"_id": 2, "name": "bananas", "qty": 7, "rating": 4, "color": "yellow", "type": ["cavendish"]}
{"_id": 4, "name": "pineapples", "qty": 3, "rating": 5, "color": "yellow"}

Los operadores de evaluación devuelven datos basados en evaluaciones de campos individuales o de los documentos de toda la colección. La siguiente tabla describe los operadores de elementos comunes y sus métodos asistentes Filters correspondientes:

operador de la query
Método asistente
Descripción

$text

text()

Realiza una búsqueda de texto en los documentos

$regex

regex()

Coincide con los documentos que tienen valores que cumplen una expresión regular especificada

$mod

mod()

Realiza una operación módulo sobre el valor de un campo y hace coincidir los documentos con un resultado específico.

Tip

Para ver una lista completa de operadores de evaluación, consulta la guía Operadores de consulta de evaluación en el manual del MongoDB Server.

El siguiente ejemplo pasa un filtro de query al método find() y utiliza el método regex() para aplicar el operador de evaluación $regex. El código utiliza una expresión regular para devolver todos los documentos en los que el valor del campo name tenga al menos dos caracteres consecutivos 'p' :

val filter = regex("name", "p{2,}")
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 1, "name": "apples", "qty": 5, "rating": 3, "color": "red", "type": ["fuji", "honeycrisp"]}
{"_id": 4, "name": "pineapples", "qty": 3, "rating": 5, "color": "yellow"}

Para aprender más sobre cómo realizar consultas de documentos, consulta la guía Consultar documentos en el manual de MongoDB Server.

Si deseas aprender más sobre la recuperación de documentos con el driver de Scala, consulta la guía Recuperar datos.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: