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

Realizar consultas de texto

En esta guía, aprenderá a utilizar el controlador de Scala para ejecutar consultas de texto en sus documentos.

Puedes usar una consulta de texto para recuperar documentos que contengan un término o una frase en un campo específico. Un término contiene solo caracteres que no sean espacios en blanco. Una frase contiene términos separados por cualquier número de espacios en blanco.

Nota

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

Los ejemplos de esta guía utilizan la movies colección en la sample_mflix base de datos de los conjuntos de datos de ejemplo 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 database collection variables y:

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 consulta de texto, debe crear un índice de texto en la colección. Un índice de texto especifica uno o más campos de cadena que se indexarán 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 encontrar documentos que contengan un término específico, pase el término como una cadena 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))
146

Para encontrar documentos que contengan varios términos, sepárelos 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))
158

Para encontrar documentos que contengan una frase, rodéela con comillas simples (\") en la cadena 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))
4

Para excluir documentos que contengan un término específico, anteponga un guion (-) al término en la cadena de búsqueda. Debe incluir al menos un término positivo en la consulta.

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))
142

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

Método
Descripción

caseSensitive()

Establece si la consulta de texto distingue entre mayúsculas y minúsculas. El valor predeterminado false es.
Tipo de parámetro: Boolean

diacriticSensitive()

Establece si la consulta de texto distingue entre diacríticos y signos diacríticos. El valor predeterminado false es.
Tipo de parámetro: Boolean

language()

Establece el idioma para la consulta de default_language texto. Por defecto, se utiliza el del índice de texto. Si no se especifica ningún idioma, el valor predeterminado "english" es.
Tipo de parámetro: String

El siguiente ejemplo cuenta los documentos que coinciden con una búsqueda sensible a 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))
146

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

Para obtener más información sobre cómo crear índices utilizando el controlador de Scala, consulte la guía Optimizar consultas mediante í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: