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

Índice ordenado

MongoDB Search le permite configurar la clasificación en su índice para preclasificar documentos en orden ascendente o descendente en el momento del índice en lugar de clasificarlos en el momento de la query. Esto es útil cuando los conjuntos de resultados son muy grandes, lo que ralentiza la clasificación en el momento de la query. Puede utilizar la opción de índice sort con los siguientes tipos de campo de MongoDB Search:

  • boolean

  • date

  • number (valores enteros, de punto flotante y double)

  • objectId

  • token

  • uuid

También puedes configurar cómo quieres que se ordenen los valores null o los valores que faltan utilizando la opción noData.

La opción sort tiene la siguiente sintaxis:

1{
2 "mappings": {
3 "dynamic": true|false,
4 "fields": {
5 "<field-name>": {
6 "type": "boolean" | "date" | "number" | "objectId" | "token" | "uuid"
7 }
8 }
9 },
10 "sort": { "<field-to-sort>": 1 | -1 } | { "<field-to-sort>": { "order": 1 | -1, "noData": "lowest" | "highest" } }
11}

Para utilizar un índice ordenado, debe:

  • Configure los campos utilizados para sort mediante asignaciones estáticas.

    • boolean

    • date

    • number (valores enteros, de punto flotante y double)

    • objectId

    • token (string values)

    • uuid

    MongoDB Search admite campos que se indexan como varios tipos para sort si al menos uno de los tipos es uno de los tipos admitidos enumerados anteriormente.

  • Para ordenar en campos anidados, configure todos los campos intermedios hasta el campo raíz como el tipo document.

Nota

Si especifica la opción sort con campos que están indexados mediante asignaciones dinámicas o typeSet, la creación de índices fallará.

Un índice ordenado ordena físicamente los documentos de MongoDB Search durante la creación de índices utilizando la ordenación de nivel superior configurada en lugar de ordenar en el momento de la query. Esto mejora el rendimiento de las queries cuya especificación $search.sort coincide con la ordenación del índice o un prefijo de la misma, especialmente al ordenar conjuntos de resultados muy grandes (como más de un millón de documentos en los resultados).

Utilice la salida explain para verificar si una query utiliza la ordenación indexada. Las query que se benefician de la ordenación indexada incluyen el campo usesIndexSort: true. Una query se beneficia cuando sus campos de ordenación coinciden con la ordenación indexada o con un prefijo de la ordenación indexada.

Nota

No puede utilizar la metaexpresión searchScore como parte del índice ordenado porque la puntuación solo se calcula en el momento de la query.

Puede ordenar en campos de arreglo. MongoDB Search aplana el arreglo y utiliza un valor representativo para la comparación. Para la ordenación ascendente, utiliza el valor más bajo del arreglo y para la ordenación descendente, utiliza el valor más alto del arreglo.

Para arreglos de tipos mixtos, el orden de clasificación se basa en el orden de comparación BSON de MongoDB. Para una ordenación ascendente, MongoDB Search utiliza el elemento con el tipo BSON más bajo. Para una ordenación descendente, MongoDB Search utiliza el elemento con el tipo BSON más alto.

Puede ordenar en campos secundarios solo si todos los documentos principales se definen estáticamente como el tipo document.

Las query que utilizan returnScope no se benefician del índice ordenado porque la definición del índice ordenado no admite el tipo de campo embeddedDocuments en el índice para la ordenación.

  • Los índices con especificaciones sort pueden experimentar una creación de índices y una replicación más lentas.

  • Las query con $search.sort especificado como el inverso de la ordenación indexada pueden ser más lentas en comparación con el uso de un índice no ordenado. Las query que utilizan otras especificaciones $search.sort no se verán afectadas.

  • MongoDB Search solo admite una especificación sort por índice. Si desea ordenar en diferentes campos, elija el orden de clasificación dominante como la ordenación indexada.

Los siguientes ejemplos crean un índice ordenado en los campos de la colección sample_airbnb.listingsAndReviews.

La siguiente definición de índice ordena los campos number_of_reviews y last_reviewed en orden descendente.

{
"mappings": {
"dynamic": false,
"fields": {
"number_of_reviews": {
"type": "number"
},
"last_reviewed": {
"type": "date"
}
}
},
"sort": { "number_of_reviews": -1, "last_reviewed": -1 }
}

La siguiente definición de índice ordena los campos number_of_reviews y last_reviewed en orden descendente. Coloca los documentos con valores nulos o faltantes al final de los resultados.

{
"mappings": {
"dynamic": false,
"fields": {
"number_of_reviews": {
"type": "number"
},
"last_reviewed": {
"type": "date"
}
}
},
"sort": {
"number_of_reviews": { "order": -1, "noData": "lowest" },
"last_reviewed": { "order": -1, "noData": "lowest" }
}
}

La siguiente definición de índice ordena el campo date en orden descendente. Para ordenar por el campo date, define el campo reviews como el tipo embeddedDocuments y el tipo document.

{
"mappings": {
"dynamic": false,
"fields": {
"reviews": [
{
"type": "embeddedDocuments",
"dynamic": true
},
{
"type": "document",
"dynamic": false,
"fields": {
"date": {
"type": "date"
}
}
}
]
}
},
"sort": { "reviews.date": -1 }
}

La siguiente definición de índice clasifica en el campo property_type en orden ascendente con valores nulos y faltantes que aparecen en la parte inferior de los resultados. El campo property_type se define como los tipos string, autocomplete y token. El índice utiliza solo el tipo token para la clasificación.

{
"mappings": {
"dynamic": false,
"fields": {
"property_type": [
{
"type": "string"
},
{
"type": "autocomplete",
"tokenization": "edgeGram",
"minGrams": 2,
"maxGrams": 15
},
{
"type": "token"
}
]
}
},
"sort": { "property_type": { "order": 1, "noData": "highest" } }
}