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

$search

$search

The $search stage performs a full-text search on the specified field or fields. The field or fields must be covered by an MongoDB Search index.

El escenario $search está disponible en los siguientes entornos:

Una etapa de pipeline $search tiene la siguiente forma de prototipo:

{
$search: {
"index": "<index-name>",
"<operator-name>"|"<collector-name>": {
<operator-specification>|<collector-specification>
},
"highlight": {
<highlight-options>
},
"concurrent": true | false,
"count": {
<count-options>
},
"searchAfter"|"searchBefore": "<encoded-token>",
"scoreDetails": true| false,
"sort": {
<fields-to-sort>: 1 | -1
},
"returnScope": {
"path": "<embedded-documents-field-to-retrieve>"
},
"returnStoredSource": true | false,
"searchNodePreference": {
"key": <preference-string>
}
}
}

La etapa $search procesa un documento con los siguientes campos:

Campo
Tipo
Necesidad
Descripción

<collector-name>

Objeto

Condicional

Nombre del colector que se utilizará con la query. Puedes proporcionar un documento que contenga las opciones específicas del colector como valor para este campo. Se requiere ya sea esto o <operator-name>.

concurrent

booleano

Opcional

Paralelice la búsqueda entre segmentos en nodos de búsqueda dedicados. Si no tiene nodos de búsqueda separados en su clúster, la búsqueda de MongoDB ignora ese indicador. Si se omite, es por defecto false. Para aprender más, consulte Paralelización de la ejecución de queries entre segmentos.

count

Objeto

Opcional

Documento que especifica las opciones de conteo para obtener un conteo de los resultados. Para obtener más información, consulte Conteo de los resultados de la búsqueda de MongoDB.

highlight

Objeto

Opcional

Documento que especifica las opciones de resaltado para mostrar los términos de búsqueda en su contexto original.

index

string

Opcional

Nombre del índice de búsqueda de MongoDB que se utilizará. Si se omite, es por defecto default.

If you name your index default, you don't need to specify an index parameter in the $search pipeline stage. If you give a custom name to your index, you must specify this name in the index parameter.

La búsqueda de MongoDB no devuelve resultados si escribe mal el nombre del índice o si el índice especificado no existe en el clúster.

<operator-name>

Objeto

Condicional

Nombre del Operador para la búsqueda. Puedes proporcionar un documento que contenga las opciones específicas del operador como el valor de este campo. Se requiere ya sea esto o <collector-name>. Utiliza el operador compuesto para ejecutar una query compuesta con múltiples operadores.

returnScope

Objeto

Opcional

Objeto que establece el contexto de la query en el campo de documento incrustado especificado. También se debe especificar returnStoredSource y configurarlo en true.

returnStoredSource

booleano

Condicional

Indicador que especifica si se debe realizar una búsqueda completa de documentos en la base de datos de backend o devolver solo los campos de origen almacenados directamente desde MongoDB Search. Si se omite, es por defecto false. Debe ser true si especifica returnScope.

Para obtener más información, consulta Devolver los campos de origen almacenados.

searchAfter

string

Opcional

Reference point for retrieving results. searchAfter returns documents starting immediately following the specified reference point. The reference point must be a Base64-encoded token generated by the $meta keyword searchSequenceToken. To learn more, see Paginate the Results. This field is mutually exclusive with the searchBefore field.

searchBefore

string

Opcional

Reference point for retrieving results. searchBefore returns documents starting immediately before the specified reference point. The reference point must be a Base64-encoded token generated by the $meta keyword searchSequenceToken. To learn more, see Paginate the Results. This field is mutually exclusive with the searchAfter field.

searchNodePreference

Objeto

Opcional

Documento que habilita el enrutamiento preferencial para esta query. Si se establece un valor para este campo, Atlas ejecuta esta query contra el mismo nodo de búsqueda cada vez que ese valor permanezca igual, anulando el enrutamiento de query por defecto.

Este documento contiene un par clave-valor donde el valor de key es una string arbitraria.

IMPORTANTE: Habilitar esta configuración puede mejorar la coherencia de los resultados de búsqueda, pero no garantiza una coherencia perpetua. Los cambios en tu conjunto de datos, estructura de índice, topología de clúster o disponibilidad de nodos preferidos aún pueden causar inconsistencias.

scoreDetails

booleano

Opcional

Flag that specifies whether to retrieve a detailed breakdown of the score for the documents in the results. If omitted, defaults to false. To view the details, you must use the $meta expression in the $project stage. To learn more, see Return the Score Details.

sort

Objeto

Opcional

Documento que especifica los campos para ordenar los resultados de MongoDB Search en orden ascendente o descendente. Se puede ordenar por fecha, número (valores enteros, flotantes y dobles) y valores de string. Para aprender más, se debe consular Orden de los resultados de MongoDB Search.

$search must be the first stage of any pipeline it appears in. $search cannot be used in:

$search returns only the results of your query. The metadata results of your $search query are saved in the $$SEARCH_META aggregation variable. You can use the $$SEARCH_META variable to view the metadata results for your $search query.

The $$SEARCH_META aggregation variable can be used anywhere after a $search stage in any pipeline, but it can't be used after the $lookup or $unionWith stage in any pipeline. The $$SEARCH_META aggregation variable can't be used in any subsequent stage after a $searchMeta stage.

Ejemplo

Supón el siguiente índice en la colección sample_mflix.movies.

{
"mappings": {
"dynamic": false,
"fields": {
"released": {
"type": "date"
}
}
}
}

The following query searches for movies released near September 01, 2011 using the $search stage. The query includes a:

  • $project stage to exclude all fields in the documents except title and released.

  • $facet etapa que genera un:

    • docs campo con un arreglo de los 5 mejores resultados de búsqueda

    • meta campo con el valor de la variable $$SEARCH_META

db.movies.aggregate([
{
"$search": {
"near": {
"path": "released",
"origin": ISODate("2011-09-01T00:00:00.000+00:00"),
"pivot": 7776000000
}
}
},
{
$project: {
"_id": 0,
"title": 1,
"released": 1
}
},
{ "$limit": 5 },
{
"$facet": {
"docs": [],
"meta": [
{"$replaceWith": "$$SEARCH_META"},
{"$limit": 1}
]
}
}
])
{
"docs" : [
{
"title" : "Submarino",
"released" : ISODate("2011-09-01T00:00:00Z")
},
{
"title" : "Devil's Playground",
"released" : ISODate("2011-09-01T00:00:00Z")
},
{
"title" : "Bag It",
"released" : ISODate("2011-09-01T00:00:00Z")
},
{
"title" : "Dos",
"released" : ISODate("2011-09-01T00:00:00Z")
},
{
"title" : "We Were Here",
"released" : ISODate("2011-09-01T00:00:00Z")
}
],
"meta" : [
{ "count" : { "lowerBound" : NumberLong(17373) } }
]
}

Para obtener más información sobre la variable $$SEARCH_META y su uso, consulta:

If you are experiencing issues with your MongoDB Search $search queries, see Troubleshoot Queries.