Docs Menu
Docs Home
/ /

MongoDB búsqueda

En esta guía, aprenderá a realizar búsquedas en sus documentos mediante la función de búsqueda de MongoDB. Laravel MongoDB proporciona una API para realizar consultas de búsqueda de MongoDB directamente con sus modelos. Esta guía describe cómo crear índices de búsqueda de MongoDB y proporciona ejemplos de cómo usar la integración de 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 Referencia de búsqueda en la documentación de Atlas.

Importante

Requisitos de las versiones Atlas y Community Edition

El $search operador de canalización de agregación solo está disponible para colecciones alojadas en clústeres de MongoDB Atlas con MongoDB v4.2 o posterior, o en clústeres de MongoDB Community Edition con MongoDB v.8 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 usar los métodos descritos en esta guía para todos los tipos de consultas de búsqueda de MongoDB. Para casos de uso más complejos, cree una canalización de agregación mediante Constructor de agregaciones.

Para realizar búsquedas en incrustaciones vectoriales en MongoDB, puede usar la API de búsqueda vectorial de Laravel MongoDB. Para obtener más información sobre esta función, consulte la guía de búsqueda vectorial de MongoDB.

Puede crear un índice de búsqueda de MongoDB de cualquiera de las siguientes maneras:

  • Invoque el create() método en la Schema fachada y pase el método searchIndex() auxiliar con los detalles de creación del índice. Para obtener más información sobre esta estrategia, consulte la sección "Administrar índices de búsqueda MongoDB y búsqueda vectorial MongoDB" de la guía del Constructor 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 a que el índice sea consultable antes de usarlo. Para comprobarlo, ejecute el método, busque el documento que describe el nuevo índice en la salida del método y verifique Collection::listSearchIndexes() el queryable valor del campo. Los documentos añadidos después de la creación del índice no están disponibles inmediatamente en los resultados de la consulta.

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

La integración de Laravel proporciona el método search() como generador de consultas y como método de modelo de Eloquent. Puedes usar el método search() para ejecutar consultas de búsqueda de MongoDB en los documentos de tus colecciones.

Debe pasar un parámetro operator al método search() que sea una instancia de SearchOperatorInterface o una matriz que contenga el tipo de operador, el nombre del campo y el valor de la consulta. 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
}
]

Puede usar el método search() para realizar diversos tipos de consultas de búsqueda de MongoDB. Según la consulta deseada, puede 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 que se utilizará

highlight

array

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

concurrent

bool

Paraleliza la consulta de búsqueda en todos los segmentos de 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 devolver documentos que comiencen 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 de los resultados

sort

array

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

returnStoredSource

bool

Especifica si se debe realizar una búsqueda completa del documento en la base de datos back-end o devolver solo los campos de origen almacenados directamente desde MongoDB Search

tracking

array

Especifica la opción de seguimiento para recuperar información analítica sobre los términos de búsqueda

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 de Laravel proporciona el método autocomplete() como generador de consultas y como método de modelo de Eloquent. Puedes usar el método autocomplete() para ejecutar búsquedas de autocompletado en los documentos de tus colecciones. Este método devuelve únicamente los valores del campo que especifiques como ruta de consulta.

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 configuración de autocompletado en su colección para poder realizar búsquedas con este tipo de función. Consulte la sección "Crear un índice de búsqueda de MongoDB" de esta guía para obtener más información 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, consulte la sección Opciones de la autocomplete referencia del operador en la documentación de Atlas.

Volver

Creador de agregaciones

En esta página