Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

Text query

MongoDB admite operaciones de consulta que realizan una query de texto en el contenido de cadenas dentro de documentos. Para ejecutar una query de texto, MongoDB utiliza un índice de texto y el $text operador del query.

Para aprender más sobre otras opciones de búsqueda de texto, como la búsqueda de texto completo y la búsqueda vectorial, consulta la Búsqueda de texto resumen en el manual de MongoDB Server.

El driver proporciona el método asistente Filters.text() para facilitar la creación de filtros de query.

Debe configurar los siguientes componentes para ejecutar los ejemplos de código en esta guía:

  • Una colección test.restaurants con documentos provenientes del archivo restaurants.json en el repositorio de activos de documentación en GitHub.

  • Las siguientes instrucciones de importación:

import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Indexes;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Sorts;
import com.mongodb.client.model.TextSearchOptions;
import com.mongodb.client.model.Projections;
import org.bson.Document;

Importante

Esta guía utiliza implementaciones personalizadas de Subscriber, que se describen en la Guía Muestra de implementaciones personalizadas de suscriptor.

Primero, conéctese a una implementación de MongoDB y declare y defina las instancias de MongoDatabase y MongoCollection.

El código siguiente se conecta a una implementación autónoma de MongoDB que se ejecuta en localhost en el puerto 27017. Luego, define la variable database para referirse a la base de datos test y la variable collection para referirse a la colección restaurants:

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("restaurants");

Para aprender más sobre cómo conectar implementaciones de MongoDB, consulta el tutorial Conectar a MongoDB.

Para crear un índice de texto, utiliza el asistente estático Indexes.text() para crear una especificación para un índice de texto y pasa la especificación al método MongoCollection.createIndex() para crear el índice.

El siguiente ejemplo crea un índice de texto en el campo name para la colección restaurants:

MongoCollection<Document> collection = database.getCollection("restaurants");
collection.createIndex(Indexes.text("name")).subscribe(new PrintToStringSubscriber<String>());

Para realizar una query de texto, utilice el método asistente Filters.text() para especificar el filtro de query de texto.

Por ejemplo, el siguiente código realiza una query de texto en el campo name para coincidir con las cadenas "bakery" o "coffee":

collection
.countDocuments(Filters.text("bakery coffee"))
.subscribe(new PrintSubscriber<Long>("Text query matches: %s"));
Text query matches: [2]

Para cada documento coincidente, una query de texto asigna una puntuación que representa la relevancia de un documento respecto al filtro de query especificado. Para devolver y ordenar por puntuación, utilice el operador $meta en el documento de proyección y la expresión de ordenación:

collection.find(Filters.text("bakery cafe"))
.projection(Projections.metaTextScore("score"))
.sort(Sorts.metaTextScore("score"))
.subscribe(new PrintDocumentSubscriber());

El asistente Filters.text() puede aceptar varias opciones de query de texto. El controlador proporciona la clase TextSearchOptions para especificar estas opciones.

Por ejemplo, la siguiente query de texto especifica la opción de languaje del query de texto al realizar una query de texto para la palabra "cafe":

collection.countDocuments(
Filters.text("cafe", new TextSearchOptions().language("english"))
).subscribe(new PrintSubscriber<Long>("Text query matches (English): %s"));
Text query matches (English): [1]

Para aprender más sobre las consultas de texto, consulte las siguientes secciones en el manual de MongoDB Server:

Volver

preferencia de lectura

En esta página