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

Realizar consultas de texto

En esta guía, puede aprender a usar el driver de Scala para ejecutar query de texto en sus documentos.

Puede utilizar una query de texto para recuperar documentos que contengan un término o una frase en un campo especificado. Un término contiene solo caracteres sin espacios en blanco. Una frase contiene términos separados por cualquier número de caracteres de espacio en blanco.

Nota

Las query de texto requieren un índice de texto en los campos de colección que desea buscar. Para aprender a crear índices, consulte la guía Optimizar query mediante índices.

Los ejemplos en esta guía utilizan la colección movies en la base de datos sample_mflix de los conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde su aplicación Scala, cree un MongoClient que se conecte a un clúster de Atlas. Luego, asigne los siguientes valores a sus variables database y collection:

val database: MongoDatabase = mongoClient.getDatabase("sample_mflix")
val collection: MongoCollection[Document] =
database.getCollection("movies")

Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulta la guía MongoDB Get Started.

Antes de ejecutar una query de texto, debe crear un índice de texto en la colección. Un índice de texto especifica uno o más campos de string para indexar para la búsqueda de texto. El siguiente ejemplo crea un índice de texto en el campo title de la colección movies:

val observable = collection.createIndex(Indexes.text("title"))
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

Para buscar documentos que contengan un término específico, pase el término como un string al método text() de la clase Filters.

El siguiente ejemplo cuenta los documentos que tienen el término "time" en el campo title:

val filterTerm = text("time")
collection.countDocuments(filterTerm)
.subscribe((count: Long) => println(count))

Para encontrar documentos que contengan varios términos, separe los términos con espacios en la cadena de búsqueda. El siguiente ejemplo cuenta los documentos que tienen el término "time" o el término "machine" en el campo title:

val filterMultiple = text("time machine")
collection.countDocuments(filterMultiple)
.subscribe((count: Long) => println(count))

Para encontrar documentos que contengan una frase, rodéela con comillas de escape (\") en la string de búsqueda.

El siguiente ejemplo cuenta los documentos que tienen la frase "time machine" en el campo title:

val filterPhrase = text("\"time machine\"")
collection.countDocuments(filterPhrase)
.subscribe((count: Long) => println(count))

Para excluir documentos que contengan un término específico, anteponga un guión (-) al término en la string de búsqueda. Debe incluir al menos un término positivo en la query.

El siguiente ejemplo cuenta los documentos que contienen el término "time" pero no el término "machine":

val filterExclude = text("time -machine")
collection.countDocuments(filterExclude)
.subscribe((count: Long) => println(count))

Puede personalizar el comportamiento de la query de texto pasando un objeto TextSearchOptions como segundo parámetro a Filters.text(). La siguiente tabla describe los métodos que puede encadenar a una instancia de TextSearchOptions:

Método
Descripción

caseSensitive()

Establece si la query de texto distingue entre mayúsculas y minúsculas. Por defecto es false.
Tipo de parámetro: Boolean

diacriticSensitive()

Establece si la query de texto distingue los diacríticos. Por defecto es false.
Tipo de parámetro: Boolean

language()

Establece el lenguaje para la query de texto. Por defecto, el default_language del índice de texto. Si no se establece ningún lenguaje, el valor por defecto es "english".
Tipo de parámetro: String

El siguiente ejemplo cuenta los documentos que coinciden con una búsqueda que distingue entre mayúsculas y minúsculas del término "Time" en el campo title:

val options = TextSearchOptions().caseSensitive(true)
val filterOptions = text("Time", options)
collection.countDocuments(filterOptions)
.subscribe((count: Long) => println(count))

Para obtener más información sobre la búsqueda de texto, consulta los siguientes recursos en el manual de MongoDB Server:

Para obtener más información sobre la creación de índices con el driver de Scala, consulta la guía Optimizar query con índices.

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