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 cómo realizar búsquedas en tus documentos utilizando la funcionalidad de MongoDB Search. Laravel MongoDB proporciona una API para realizar consultas de MongoDB Search directamente con sus modelos. Esta guía describe cómo crear índices de MongoDB Search y proporciona ejemplos de cómo utilizar la integración con Laravel para realizar búsquedas.

La API de búsqueda de MongoDB utiliza internamente el $search Operador de agregación para realizar consultas. Para obtener más información sobre este operador, consulte $search referencia en la documentación de Atlas.

Importante

Atlas y requisitos de versión de Community Edition

El operador de pipeline de agregación $search está disponible solo para colecciones alojadas en MongoDB Atlas clústeres que ejecutan MongoDB v4.2 o posterior, o en MongoDB Community Edition clústeres que ejecutan MongoDB v8.2 o posterior. Para obtener más información sobre estos requisitos, consulte la documentación de MongoDB Search.

Nota

Es posible que no pueda utilizar los métodos descritos en esta guía para todos los tipos de consultas de MongoDB Search. Para casos de uso más complejos, crea una pipeline de agregación utilizando la Constructor de agregación.

Para realizar búsquedas en embeddings vectoriales en MongoDB, puedes utilizar la API de búsqueda vectorial de MongoDB para Laravel. Para aprender sobre esta función, consulta la guía MongoDB Vector Search.

Puedes crear un índice de MongoDB Search de cualquiera de las siguientes maneras:

  • Llama al método create() en la fachada Schema y pasa el método asistente searchIndex() con los detalles de la creación del índice. Para obtener más información sobre esta estrategia, consulta la sección Gestionar MongoDB Search y MongoDB Vector Search Indexes de la guía del Generador de esquemas.

  • Acceda a una colección y luego llame al método desde la biblioteca PHP de MongoDB, como se muestra en el siguiente createSearchIndex() código:

    $collection = DB::connection('mongodb')->getCollection('movies');
    $collection->createSearchIndex(
    ['mappings' => ['dynamic' => true]],
    ['name' => 'search_index']
    );

Importante

Operaciones de índice de búsqueda asincrónica

Las operaciones que crean y eliminan índices de MongoDB Search se ejecutan de forma asíncrona. Por lo tanto, no se puede crear un nuevo índice de MongoDB Search mientras se elimina un índice con el mismo nombre en el mismo espacio de nombres. Asegúrese de esperar a que MongoDB elimine el índice en conflicto antes de llamar al método createSearchIndex().

Además, debe esperar hasta que el índice esté listo para consultas antes de usarlo. Para saber si tu índice es consultable, ejecuta el método Collection::listSearchIndexes(), busca el documento que describe el nuevo índice en la salida del método y verifica el valor del campo queryable. Los documentos agregados después de la creación del índice no están disponibles de inmediato en los resultados de las consultas.

En esta sección, puede aprender a utilizar la API de búsqueda de MongoDB en la integración de Laravel.

La Integración Laravel proporciona el método search() como un método de constructor de query y como un método de modelo Eloquent. Puedes usar el método search() para ejecutar consultas de búsqueda en MongoDB Search en documentos de tus colecciones.

Debe pasar un parámetro operator al método search() que sea una instancia de SearchOperatorInterface o un arreglo que contenga el tipo de operador, el nombre del campo y el valor de la query. Puede crear una instancia de SearchOperatorInterface llamando al método Search::text() y pasando el campo que está consultando y su término o frase de búsqueda.

Debe incluir la siguiente declaración de importación en su aplicación para crear una instancia SearchOperatorInterface:

use MongoDB\Builder\Search;

El siguiente código realiza una consulta de búsqueda de MongoDB en el campo title del modelo Movie para el término 'dream':

$movies = Movie::search(
sort: ['title' => 1],
operator: Search::text('title', 'dream'),
)->all();
[
{ "title": "Dreaming of Jakarta",
"year": 1990
},
{ "title": "See You in My Dreams",
"year": 1996
}
]

Se puede usar el método search() para ejecutar muchos tipos de consultas de query de MongoDB Search. Dependiendo de la query que desees realizar, puedes pasar los siguientes parámetros opcionales a search():

Parámetro opcional
Tipo
Descripción

index

string

Proporciona el nombre del índice de búsqueda de MongoDB a utilizar

highlight

array

Especifica las opciones de resaltado para mostrar los términos de búsqueda en su contexto original

concurrent

bool

Paralleliza la consulta de búsqueda entre segmentos en nodos de búsqueda dedicados

count

string

Especifica las opciones de conteo para recuperar un recuento de los resultados

searchAfter

string

Especifica un punto de referencia para la devolución de documentos comenzando inmediatamente después de ese punto.

searchBefore

string

Especifica un punto de referencia para devolver documentos que comienzan inmediatamente antes de ese punto

scoreDetails

bool

Especifica si se debe recuperar un desglose detallado de la puntuación para los resultados

sort

array

Especifica los campos en los que se ordenarán los resultados.

returnStoredSource

bool

Especifica si desea realizar una búsqueda de documento completo en la base de datos de back end o devolver solo los campos de origen almacenados directamente desde MongoDB Search

Para obtener más información sobre estos parámetros, consulte la sección Campos de la $search referencia del operador en la documentación de Atlas.

La Integración Laravel proporciona el método autocomplete() como un método de constructor de query y como un método de modelo Eloquent. Puedes utilizar el método autocomplete() para ejecutar búsquedas autocompletadas en los documentos de tus colecciones. Este método devuelve solo los valores del campo que especificas como la ruta de query.

Para aprender más sobre este tipo de MongoDB Search query, consulta la referencia de autocompletado en la documentación de Atlas.

Nota

Debe crear un índice de búsqueda de MongoDB con una configuración de autocompletado en su colección antes de poder realizar búsquedas de autocompletado. Consulta la Crear un índice de búsqueda de MongoDB sección de esta guía para aprender más sobre la creación de índices de búsqueda.

El siguiente código realiza una consulta de autocompletado de búsqueda de MongoDB para la cadena "jak" en el campo title:

$movies = Movie::autocomplete('title', 'jak')->all();
[
"Dreaming of Jakarta",
"Jakob the Liar",
"Emily Calling Jake"
]

También puede pasar los siguientes parámetros opcionales al método autocomplete() para personalizar la consulta:

Parámetro opcional
Tipo
Descripción
Valor por defecto

fuzzy

bool or array

Habilita la búsqueda difusa y las opciones de búsqueda difusa

false

tokenOrder

string

Especifica el orden en el que se buscarán los tokens

'any'

Para obtener más información sobre estos parámetros, consulta la sección Opciones de la referencia del operador autocomplete en la documentación de Atlas.

Volver

Creador de agregaciones

En esta página