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
/ /

MongoDB búsqueda

En esta guía, puedes aprender a usar el controlador Java para ejecutar MongoDB Search consultas de búsqueda en una colección. MongoDB Search permite realizar búsquedas de texto completo en colecciones alojadas en MongoDB Atlas. Los índices de MongoDB Search especifican el comportamiento de la búsqueda y los campos que se van a indexar.

Los ejemplos de esta guía utilizan el movies Colección en la sample_mflix base de datos de los conjuntos de datos de muestra de Atlas. Para aprender a crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de muestra, consulte la guía de introducción a MongoDB. Para obtener más información sobre las operaciones de agregación y los generadores, consulte la agregación guide.

Esta sección muestra cómo crear una pipeline de agregación para ejecutar una consulta de MongoDB Search en una colección. Puedes utilizar el método builder Aggregates.search() para crear una etapa $search en la pipeline que especifique los criterios de búsqueda. Luego, llama al método aggregate() y pasa tu pipeline como parámetro.

Nota

Disponible solo en Atlas para MongoDB v4.2 y posteriores

Este operador de la pipeline de agregación solo está disponible para colecciones alojadas en clústeres MongoDB Atlas que ejecuten la versión v4.2 o posterior, cubiertas por un índice de MongoDB Search. Conozca más sobre la configuración requerida y la funcionalidad de este operador en la documentación de Búsqueda de MongoDB.

Antes de ejecutar una consulta de búsqueda de MongoDB, debe crear un índice de búsqueda de MongoDB en su colección. Para aprender a crear un índice de búsqueda de MongoDB mediante programación, consulte la sección "Índices de búsqueda de MongoDB y búsqueda vectorial" en la guía de índices.

Este ejemplo ejecuta una consulta de búsqueda de MongoDB realizando las siguientes acciones:

  • Construye una etapa $search utilizando el método de construcción Aggregates.search(), indicando al controlador que consulte documentos en los que el campo title contenga la palabra "Alabama"

  • Construye una etapa $project utilizando el método de construcción Aggregates.project(), instruyendo al driver para que incluya el campo title en los resultados de la query

  • Pasa las etapas de la pipeline al método aggregate() e imprime los resultados

collection.aggregate(
Arrays.asList(
Aggregates.search(SearchOperator.text(
SearchPath.fieldPath("title"), "Alabama")),
Aggregates.project(Projections.include("title"))
)
).forEach(doc -> System.out.println(doc.toJson()));
{"_id": {"$oid": "..."}, "title": "Alabama Moon"}
{"_id": {"$oid": "..."}, "title": "Crazy in Alabama"}
{"_id": {"$oid": "..."}, "title": "Sweet Home Alabama"}

Tip

Ejemplos de búsqueda de MongoDB en el controlador Java

Para ver más ejemplos que utilizan el controlador Java para realizar consultas de búsqueda de MongoDB, consulte Tutoriales de búsqueda de MongoDB en la documentación de Atlas.

Utilice el método searchMeta() para crear una etapa de pipeline de $searchMeta, que solo devuelve los metadatos de los resultados de MongoDB Search.

Tip

Solo disponible en Atlas para MongoDB v4.4.11 y posteriores

Este operador del pipeline de agregación está disponible únicamente en los clústeres de MongoDB Atlas que ejecutan la versión v4.4.11 y posteriores. Para obtener una lista detallada de la disponibilidad de versiones, consulta la documentación de MongoDB Atlas en $searchMeta.

El siguiente ejemplo muestra los metadatos near para una etapa de agregación MongoDB Search:

Aggregates.searchMeta(
SearchOperator.near(2010, 1, fieldPath("year")));

Para obtener más información sobre este método auxiliar, consulte searchMeta() Documentación de la API.

El driver Java 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 cadena 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().

Comprueba si existe una ruta a un nombre de campo indexado específico 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 cadena 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 búsqueda de MongoDB, consulte la sección Índices de búsqueda de MongoDB y de búsqueda vectorial de la guía Índices.

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 title valores que comiencen con el término "Love"

List<Bson> pipeline = new ArrayList<>();
pipeline.add(Aggregates.search(
SearchOperator.compound()
.filter(
List.of(
SearchOperator.in(fieldPath("genres"), "Comedy"),
SearchOperator.phrase(fieldPath("fullplot"), "new york"),
SearchOperator.numberRange(fieldPath("year")).gtLt(1950, 2000),
SearchOperator.wildcard(fieldPath("title"), "Love *")
))));
pipeline.add(Aggregates.project(
Projections.include("title", "year", "genres")
));
AggregateIterable<Document> results = collection.aggregate(pipeline);
results.forEach(doc -> System.out.println(doc.toJson()));
{"_id": ..., "genres": ["Comedy", "Romance"], "title": "Love at First Bite", "year": 1979}
{"_id": ..., "genres": ["Comedy", "Drama"], "title": "Love Affair", "year": 1994}

Para obtener más información sobre los métodos auxiliares de búsqueda de MongoDB, consulte la referencia de la interfaz SearchOperator en la documentación de la API de Driver Core.

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

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

Volver

Ejecute un comando

En esta página