Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Referencia de query

MongoDB Search queries take the form of an aggregation pipeline stage. MongoDB Search provides $search and $searchMeta stages, both of which must be the first stage in any query pipeline, including the $lookup and $unionWith sub-pipelines. These stages can be used in conjunction with other aggregation pipeline stages in your query pipeline.

Según la etapa de pipeline que elijas, tu query devuelve los resultados de una búsqueda en texto completo o metadatos sobre tus resultados de búsqueda:

Etapa de la canalización de agregación
Propósito

Devuelve los resultados de búsqueda de una búsqueda de texto completo.

Devolver los metadatos sobre los resultados de la búsqueda.

MongoDB Search también proporciona operadores del query y coleccionistas que puedes usar dentro de las etapas del pipeline de agregación $search y $searchMeta. Los operadores de MongoDB Search permiten localizar y recuperar datos relevantes de la colección en el clúster. El colector devuelve un documento que representa los resultados de los metadatos de búsqueda.

Se pueden utilizar los operadores de MongoDB Search para realizar queries de términos, frases, formas y puntos geográficos, valores numéricos, documentos similares, términos sinónimos y mucho más.

You can also search using regex and wildcard expressions. The MongoDB Search compound operator allows you to combine multiple operators inside your $search stage to perform a complex search and filter of data based on what must, must not, or should be present in the documents returned by MongoDB Search. You can use the compound operator to also match or filter documents in the $search stage itself. Running $match after $search is less performant than running $search with the compound operator.

Para aprender más sobre operadores y recopiladores, consulta Operadores y recopiladores.

mongod y mongot en el mismo nodo

When you run a query, MongoDB Search uses the configured read preference to identify the node on which to run the query. The query first goes to the MongoDB process, which is mongod for a replica set cluster or mongos for a sharded cluster.

For a replica set cluster, the MongoDB process routes the query to the mongot on the same node. For sharded clusters, your cluster data is partitioned across mongod instances and each mongot knows about the data on the mongod on the same node only. Therefore, you can't run MongoDB Search queries that target a particular shard. mongos directs the queries to all shards, making these scatter gather queries. If you use zones to distribute a sharded collection over a subset of the shards in the cluster, MongoDB Search routes the query to the zone that contains the shards for the collection that you are querying and runs your $search queries on just the shards where the collection is located.

MongoDB Search realiza la búsqueda y la puntuación y devuelve los identificadores de documentos y otros metadatos de búsqueda para los resultados coincidentes a mongod. Luego, el mongod realiza una búsqueda completa de documentos de forma implícita para obtener los resultados coincidentes y devuelve los resultados al cliente.

Si utiliza la opción $search concurrente en su query, MongoDB Search permite el paralelismo intra-query. Para obtener más información, consulte Paralelizar la ejecución de queries entre segmentos.

mongod y mongot en nodos diferentes

When you run a query, the query first goes to the mongod based on the configured read preference. By default, the mongod process routes the search query through a load balancer on the same node, which distributes the requests across all of the mongot processes. Alternatively, if you set the searchNodePreference parameter for your $search stage, MongoDB Search runs your query against the same search node each time.

El proceso de MongoDB Search mongot realiza la búsqueda y la puntuación, y devuelve los ID de los documentos y los metadatos de los resultados de las coincidencias a mongod. A continuación, mongod realiza una búsqueda en el documento completo para obtener resultados coincidentes y devuelve los resultados al cliente. Si se utiliza la opción $search concurrente en el query, MongoDB Search permite el paralelismo intra-query. Para aprender más, se puede consultar Paralelización de la ejecución de queries entre segmentos.

MongoDB Search asocia una puntuación basada en la relevancia a cada documento del conjunto de resultados. La puntuación basada en la relevancia permite a MongoDB Search devolver los documentos en orden de la puntuación más alta a la más baja. MongoDB Search puntúa los documentos más alto si el término del query aparece con frecuencia en un documento y más bajo si el término del query aparece en muchos documentos de la colección. MongoDB Search también ofrece soporte para personalizar la puntuación por defecto basada en relevancia mediante aumentos, decaimientos u otras opciones de modificación. Para obtener más información sobre la personalización de las puntuaciones resultantes, se puede consultar Puntuar los documentos en los resultados.

Tip

See: Learn by Watching

Ver este video da una visión general de cómo buscar y rastrear los queries con MongoDB Search. En este video, se puede aprender más sobre los operadores de MongoDB Search y cómo MongoDB Search califica los documentos en los resultados.

Duración: 15 minutos

Se pueden crear y ejecutar MongoDB Search queries utilizando los siguientes clientes:

mongot no devuelve ningún error, pero devuelve un conjunto de resultados vacío si el query $search:

  • Hace referencia a un índice que no existe. Si no se especifica un índice por nombre en el query, MongoDB Search por defecto usa un índice llamado default. Si no se tiene un índice llamado default o si el índice que se especificó no existe, MongoDB Search no devuelve un error y devuelve un conjunto de resultados vacío. Se puede especificar un índice válido por su nombre utilizando la opción index.

  • Especifica un campo sin índice. Si se ejecuta un query en un campo que no está indexado, MongoDB Search no devuelve un error y devuelve un conjunto de resultados vacío. Solo se deben especificar campos indexados como valores para el parámetro path. Se puede permitir la asignación dinámica en la definición del índice de la colección para asegurarse de que todos los campos indexables dinámicamente de la colección se indexen automáticamente. Para aprender más, ver mapeo dinámico.

  • Utiliza el operador text en una ruta de campo que no está indexada como un tipo string. Si a un campo se le asigna un índice como un tipo de campo de MongoDB Search distinto a string, como stringFacet o autocomplete, MongoDB Search no devuelve un error y devuelve un conjunto de resultados vacío. Debes indexar los campos con valores de tipo de dato string BSON como tipo string para ejecutar queries en los campos con el operador texto.

mongot devuelve un error PlanExecutor si tu query $search:

  • Especifica un campo que está indexado como un tipo de dato incorrecto. En este caso, si se ejecuta un query, MongoDB Search devuelve un mensaje de error que identifica el campo que se ha indexado incorrectamente y su tipo de dato correcto. Por ejemplo:

    PlanExecutor error during aggregation :: caused by :: Cannot facet on field "genres" because
    it was not indexed as a "stringFacet" field.

    Por ejemplo, para ejecutar queries de facet (operador de MongoDB Search) contra los campos string, number o date, se debe crear un índice para los campos utilizando el tipo de campo correspondiente de MongoDB Search, como stringFacet, number y date respectivamente. Para aprender más, se puede consultar Tipos de datos compatibles y no compatibles.