Overview
En esta guía, puedes aprender a realizar búsquedas en los documentos utilizando la funcionalidad de MongoDB Search. La librería PHP permite realizar consultas de MongoDB Search utilizando el Constructor de agregación.
Para obtener más información sobre MongoDB Search, consulta el Resumen de MongoDB Search. La implementación de MongoDB Search para la librería PHP utiliza internamente el $search operador de agregación para realizar query. Para obtener más información sobre este operador, consulte la referencia $search en la documentación de Atlas.
Nota
Búsqueda vectorial de MongoDB
Para realizar búsquedas en incrustaciones de vectores en MongoDB, puede utilizar la API de búsqueda vectorial de MongoDB. Para obtener información sobre esta funcionalidad, consulte la guía Ejecutar una query de búsqueda vectorial en MongoDB.
Importante
Atlas y requisitos de versión de Community Edition
El operador $search pipeline de agregación está disponible únicamente para colecciones alojadas en clústeres de MongoDB Atlas que ejecutan MongoDB v4.2 o posterior, o en clústeres de MongoDB Community Edition que ejecutan MongoDB v8.2 o posterior. Para obtener más información sobre la configuración requerida y el funcionamiento de este operador, consulta la documentación de MongoDB Search.
índice de MongoDB Search
Antes de poder realizar queries de MongoDB Search, debes crear un índice de MongoDB Search en tu colección. Para obtener más información sobre cómo crear este tipo de índice, consulta la guía Índices de búsqueda de MongoDB.
Etapa de agregación de búsqueda
Importa las siguientes clases en tu aplicación para realizar consultas de MongoDB Search mediante el Agregación Builder:
use MongoDB\Builder\Search; use MongoDB\Builder\Stage;
Para crear una etapa $search en tu pipeline de agregación, realiza las siguientes acciones:
Cree un arreglo para almacenar las etapas de la pipeline.
Llama al método
Stage::search()para crear la etapa MongoDB Search.Dentro del cuerpo del método
search(), utilice los métodos de la clase constructoraSearchpara construir los criterios de consulta de búsqueda.
El siguiente código demuestra la plantilla para construir consultas básicas de MongoDB Search:
$pipeline = [ Stage::search( /* MongoDB Search query specifications Search::compound(...) */ ), ];
Ejemplos de queries de MongoDB Search
En esta sección puedes aprender cómo realizar diferentes tipos de query MongoDB Search usando el Agregación Builder. Los ejemplos de esta sección utilizan datos de muestra de la colección sample_restaurants.restaurants.
query compuesta con filtro
Utilice el método Search::compound() para combinar dos o más operadores en una sola query. Este método toma argumentos con nombre para tus cláusulas, como must y filter. En cada cláusula, utiliza el método Search::text() para especificar las cadenas que se deben buscar al realizar la búsqueda de texto completo.
Este ejemplo realiza una MongoDB Search que tiene las siguientes especificaciones:
Incluye una
mustcláusula para buscar la string"kitchen"en elnamecampoIncluye una cláusula de
shouldpara dar mayor relevancia a los documentos en los que el campocuisineincluye"american"Incluye un campo
filterpara filtrar solo los documentos en los que el valorboroughsea"Queens"en los resultados
$pipeline = [ Stage::search( Search::compound( must: [ Search::text( query: 'kitchen', path: 'name', ), ], should: [ Search::text( query: 'american', path: 'cuisine', ), ], filter: [ Search::text( query: 'Queens', path: 'borough', ), ], ), ), Stage::project( borough: 1, cuisine: 1, name: 1, ), Stage::limit(3), ]; $cursor = $collection->aggregate($pipeline); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"_id":...,"borough":"Queens","cuisine":"American","name":"Kitchen Door"} {"_id":...,"borough":"Queens","cuisine":"American","name":"Cc Kitchen"} {"_id":...,"borough":"Queens","cuisine":"American","name":"Suite Kitchen"} // Results truncated
Autocomplete query
La librería PHP proporciona el método Search::autocomplete() para ejecutar búsquedas de autocompletado en los documentos de tus colecciones.
Para aprender más sobre este tipo de MongoDB Search query, consulta la referencia de autocompletado en la documentación de Atlas.
Nota
El índice de MongoDB Search debe estar configurado para queries de autocompletar. Para obtener más información, consulta Cómo indexar campos para autocompletar en la documentación de Atlas.
El siguiente código realiza una query de autocompletado de MongoDB Search para la string "Lucy" en el campo name:
$pipeline = [ Stage::search( Search::autocomplete( query: 'Lucy', path: 'name', ), ), Stage::limit(3), Stage::project(_id: 0, name: 1), ]; $cursor = $collection->aggregate($pipeline); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"name":"Juicy Lucy"} {"name":"Lucy'S Vietnamese Kitchen"} {"name":"Lucy'S Cantina Royale"} // Results Truncated
También puede pasar los siguientes parámetros opcionales al método autocomplete() para personalizar la consulta:
Parámetro opcional | Descripción | Valor por defecto |
|---|---|---|
| Activa la búsqueda difusa y las opciones de búsqueda difusa |
|
| Especifica el orden en el que se buscarán los tokens |
|
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.
opciones de búsqueda
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 |
|---|---|---|
|
| Proporciona el nombre del índice de búsqueda de MongoDB a utilizar |
|
| Especifica las opciones de resaltado para mostrar los términos de búsqueda en su contexto original |
|
| Paralleliza la consulta de búsqueda entre segmentos en nodos de búsqueda dedicados |
|
| Especifica las opciones de conteo para recuperar un recuento de los resultados |
|
| Especifica un punto de referencia para la devolución de documentos comenzando inmediatamente después de ese punto. |
|
| Se especifica un punto de referencia para devolver documentos a partir de inmediatamente antes de ese punto |
|
| Especifica si se debe recuperar un desglose detallado de la puntuación para los resultados |
|
| Especifica los campos sobre los que ordenar los resultados |
|
| Especifica si se debe realizar una consulta completa del documento en la base de datos del backend o si se deben devolver únicamente los campos fuente almacenados directamente desde MongoDB Search. |
Para obtener más información sobre estos parámetros, consulte la sección Campos de la referencia del operador $search en la documentación de Atlas.