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.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

Ejecutar queries de MongoDB Search

En esta guía, puedes aprender a usar el driver de Scala para ejecutar consultas de búsqueda de MongoDB en una colección. MongoDB Search le permite realizar búsquedas de texto completo en sus colecciones. Los índices de MongoDB Search especifican el comportamiento de la búsqueda y los campos a indexar.

Para aprender a crear y gestionar MongoDB Search índice de búsqueda mediante el driver Scala, consulta la guía MongoDB Search y MongoDB Vector Search índice de búsqueda.

Los ejemplos de esta guía utilizan la colección movies en la base de datos sample_mflix de los conjuntos de datos de ejemplo de Atlas. Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta Comienza con Atlas.

Nota

MongoDB Search está disponible en las siguientes implementaciones:

  • MongoDB Atlas v4.2 o posterior

  • MongoDB Community Edition v8.2 o posterior

Su colección debe tener un índice de búsqueda de MongoDB Search para ejecutar consultas de MongoDB Search. Para aprender a crear un índice de búsqueda de MongoDB Search, consulte la guía MongoDB Search y MongoDB Vector Search Indexes.

Para realizar una búsqueda de texto completo, llame al método aggregate() con una etapa de pipeline $search. El driver de Scala proporciona el método asistente Aggregates.search() para crear esta etapa. El método search() requiere los siguientes argumentos:

  • SearchOperator instancia que especifica el campo y el texto que se va a buscar

  • SearchOptions instancia que especifica las opciones para personalizar la búsqueda, incluido el nombre del índice de búsqueda de MongoDB Search que se utilizará

El siguiente ejemplo busca en el campo title el texto "Alabama" y proyecta solo el campo _id, que se incluye por defecto, y el campo title de los documentos coincidentes:

val operator = SearchOperator.text(
SearchPath.fieldPath("title"), "Alabama")
val options = searchOptions().index("<search index name>")
val pipeline = Seq(
Aggregates.search(operator, options),
Aggregates.project(Projections.include("title"))
)
try {
Await
.result(collection.aggregate(pipeline).toFuture(), 20.seconds)
.foreach((doc: Document) => println(doc.toJson()))
} catch {
case e: Throwable => println(s"There was an error: $e")
}

Tip

Para ver tutoriales de MongoDB Search en la documentación de Atlas, consulta Ejecutar consultas de búsqueda de Atlas.

Nota

Los metadatos de MongoDB Search están disponibles en las siguientes implementaciones:

  • MongoDB Atlas v4.4.11 o posterior

  • MongoDB Community Edition v8.2 o posterior

Utilice el método asistente Aggregates.searchMeta() para recuperar solo los metadatos de una MongoDB Search sin devolver los resultados de la búsqueda. El siguiente ejemplo devuelve metadatos para una consulta que busca en el campo year valores cercanos a 2010:

try {
Await
.result(
collection.aggregate(Seq(
Aggregates.searchMeta(
SearchOperator.near(2010, 1, SearchPath.fieldPath("year")))
)).toFuture(),
20.seconds
)
.foreach((doc: Document) => println(doc.toJson()))
} catch {
case e: Throwable => println(s"There was an error: $e")
}

El driver Scala proporciona métodos asistentes para los siguientes operadores:

Operador
Descripción

Realiza una búsqueda de una palabra o frase que contenga una secuencia de caracteres de una string de entrada incompleta.

Combina dos o más operadores en una única query.

Verifica si un campo coincide con un valor que especificaste. Se asigna a los métodos equals() y equalsNull().

Verifica si existe una ruta hacia un nombre de campo indexado especificado en un documento.

Realiza una búsqueda de un arreglo de valores de número, fecha, booleano, objectId, uuid o string BSON en la ruta determinada y retorna documentos donde el valor del campo coincide con cualquier valor en el arreglo especificado.

Devuelve documentos similares a los documentos de entrada.

Permite consultar y puntuar valores numéricos, fechas y valores de puntos GeoJSON.

Realiza una búsqueda de documentos que contienen una secuencia ordenada de términos utilizando el analizador especificado en la configuración del índice.

Brinda soporte a las queries de una combinación de campos indexados y valores.

Permite la consulta y la calificación de valores numéricos, de fecha y de string. Se asigna a los métodos numberRange() y dateRange().

Interpreta el campo de query como una expresión regular.

Realiza una búsqueda de texto completo utilizando el analizador que se especifique en la configuración del índice.

Permite consultas que utilizan caracteres especiales en la string de búsqueda que pueden coincidir con cualquier carácter.

Antes de que puedas ejecutar este ejemplo, debes crear un índice de búsqueda de MongoDB en la colección movies que tenga la siguiente definición:

{
"mappings": {
"dynamic": true,
"fields": {
"title": {
"analyzer": "lucene.keyword",
"type": "string"
},
"genres": {
"normalizer": "lowercase",
"type": "token"
}
}
}
}

Para obtener más información sobre la creación de índices de MongoDB Search, consulte la guía Índices de MongoDB Search y MongoDB Vector Search.

El siguiente código crea un escenario $search que tiene las siguientes especificaciones:

  • Comprueba que el arreglo genres incluya "Comedy"

  • Busca en el campo fullplot la frase "new york"

  • Coincide con year valores entre 1950 y 2000, ambos inclusive

  • Busca valores de title que comiencen con el término "Love"

val searchStage = Aggregates.search(
SearchOperator.compound()
.must(
Iterable(
SearchOperator.in(fieldPath("genres"), List("Comedy")),
SearchOperator.phrase(fieldPath("fullplot"), "new york"),
SearchOperator.numberRange(fieldPath("year")).gtLt(1950, 2000),
SearchOperator.wildcard("Love *", fieldPath("title")),
).asJava
)
)
val projectStage = Aggregates.project(
Projections.include("title", "year", "genres"))
try {
Await
.result(
collection.aggregate(Seq(searchStage, projectStage)).toFuture(),
20.seconds
)
.foreach((doc: Document) => println(doc.toJson()))
} catch {
case e: Throwable => println(s"There was an error: $e")
}

Para obtener más información sobre los métodos asistente de MongoDB Search, consulta la referencia de la interfaz SearchOperator en la documentación de Core API del driver.

Para obtener más información sobre MongoDB Search, consulte MongoDB Search Overview en la documentación de Atlas.

Para obtener más información sobre los métodos y tipos tratados en esta guía, consulta la siguiente documentación de la API: