Docs Menu
Docs Home
/ /

Ejecutar una consulta de búsqueda de MongoDB

En esta guía, aprenderá a realizar búsquedas en sus documentos mediante la función de búsqueda de MongoDB. La biblioteca PHP le permite realizar consultas de búsqueda de MongoDB mediante... Constructor de agregaciones.

Para obtener más información sobre MongoDB Search, consulte Descripción general de la búsqueda de MongoDB. La implementación de la búsqueda de MongoDB para la biblioteca PHP utiliza internamente $search Operador de agregación para realizar consultas. 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

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 la configuración necesaria y la funcionalidad de este operador, consulte la documentación de MongoDB Search.

Para poder realizar consultas de búsqueda de MongoDB, debe crear un índice de búsqueda de MongoDB en su colección. Para obtener más información sobre cómo crear este tipo de índice, consulte la guía de índices de búsqueda de MongoDB.

Importe las siguientes clases a su aplicación para realizar consultas de búsqueda de MongoDB mediante el Generador de agregación:

use MongoDB\Builder\Pipeline;
use MongoDB\Builder\Search;
use MongoDB\Builder\Stage;

Para crear una etapa $search en su canal de agregación, realice las siguientes acciones:

  1. Cree una instancia Pipeline para almacenar las etapas de la canalización.

  2. Llame al método Stage::search() para crear la etapa de búsqueda de MongoDB.

  3. Dentro del cuerpo del método search(), utilice métodos de la clase generadora Search para construir sus criterios de consulta de búsqueda.

El siguiente código demuestra la plantilla para construir consultas de búsqueda básicas de MongoDB:

$pipeline = new Pipeline(
Stage::search(
/* MongoDB Search query specifications
Search::compound(...) */
),
);

En esta sección, aprenderá a realizar diferentes tipos de consultas de búsqueda de MongoDB mediante el Generador de Agregaciones. Los ejemplos de esta sección utilizan datos de muestra de la colección sample_restaurants.restaurants.

Utilice el método Search::compound() para combinar dos o más operadores en una sola consulta. Este método acepta argumentos con nombre para sus cláusulas, como must y filter. En cada cláusula, utilice el método Search::text() para especificar las cadenas que se buscarán al realizar la búsqueda de texto completo.

Este ejemplo realiza una consulta de búsqueda de MongoDB que tiene las siguientes especificaciones:

  • Incluye una must cláusula para buscar la string "kitchen"en el name campo

  • Incluye una cláusula should para clasificar altamente los documentos en los que el campo cuisine incluye "american"

  • Incluye un campo filter para incluir solo documentos en los que el valor borough es "Queens" en los resultados

$pipeline = new 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

La biblioteca PHP proporciona el método Search::autocomplete() para ejecutar búsquedas de autocompletar en documentos de sus colecciones.

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

Nota

Su índice de búsqueda de MongoDB debe estar configurado para consultas de autocompletado. Para obtener más información, consulte "Cómo indexar campos para autocompletado" en la documentación de Atlas.

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

$pipeline = new 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

fuzzy

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

false

tokenOrder

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.

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 backend 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.

Volver

Ejecute un comando de base de datos

En esta página