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

Orden de comparación/ordenación

Al comparar valores de diferentes BSON types en operaciones de ordenación, MongoDB utiliza el siguiente orden de comparación, de menor a mayor:

  1. MinKey (tipo interno)

  2. Nulo

  3. Números (enteros, largos, dobles, decimales)

  4. Símbolo, string

  5. Objeto

  6. Arreglo

  7. BinData

  8. ObjectId

  9. Booleano

  10. fecha

  11. Marca de tiempo

  12. Expresión regular

  13. Código JavaScript

  14. Código JavaScript con alcance

  15. MaxKey (tipo interno)

Las expresiones de agregación hacen comparaciones entre tipos. Para más información, consulte Operadores de comparación.

Nota

MongoDB aplica comparaciones con Operadores de predicado de query de comparación solo en documentos donde el tipo BSON del campo de destino coincide con el tipo de operando de query mediante Delimitación de tipo.

MongoDB trata algunos tipos como equivalentes a efectos de comparación. Por ejemplo, todos los tipos numéricos se consideran equivalentes en las comparaciones.

Por defecto, MongoDB utiliza la comparación binaria simple para comparar cadenas.

La intercalación permite a los usuarios especificar reglas propias del lenguaje para la comparación de strings, como reglas para el uso de mayúsculas y minúsculas y marcas de acento.

La especificación de intercalación tiene la siguiente sintaxis:

{
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

Al especificar la intercalación, el campo locale es obligatorio; todos los demás campos de intercalación son opcionales. Para las descripciones de los campos, consulta Documento de intercalación.

Si no se especifica ninguna intercalación para la colección o para las operaciones, MongoDB utiliza la comparación binaria simple usada en versiones anteriores para las comparaciones de strings.

Cuando ordena en un campo que contiene un arreglo:

  • Un orden ascendente compara los elementos más pequeños del arreglo según el orden de clasificación del tipo BSON.

  • Un ordenamiento descendente compara los elementos más grandes del arreglo según el orden de ordenamiento inverso del tipo BSON.

  • Una clasificación en un campo cuyo valor es un arreglo de un solo elemento (por ejemplo, [ 1 ]) y un campo cuyo valor no es un arreglo (por ejemplo, 2) se clasifica en 1 y 2.

  • Una ordenación coloca un arreglo vacío (por ejemplo, [ ]) antes de un valor null o un valor de campo faltante.

  • Una clasificación de un arreglo anidado (por ejemplo, [[1, 2], [3, 4]]) clasifica cualquier arreglo después del arreglo más externo de forma lexicográfica.

Cuando se consulta un campo que contiene un arreglo:

  • Los operadores de predicado de query de comparación, como $lt y $gt, aplican corchetes de tipo cuando el valor de la query es un arreglo.

  • Si el valor del campo de destino es un arreglo, el operador realiza una comparación entre corchetes de tipo elemento por elemento sobre el arreglo.

  • Los operadores de comparación comparan los arreglos lexicográficamente.

La comparación de MongoDB de los objetos BSON utiliza el siguiente orden:

  1. Compara recursivamente los pares clave-valor en el orden en que aparecen dentro del objeto BSON.

  2. Compara los tipos de campo. MongoDB utiliza el siguiente orden de comparación para los tipos de campos, de menor a mayor:

    1. MinKey (tipo interno)

    2. Nulo

    3. Números (enteros, largos, dobles, decimales)

    4. Símbolo, string

    5. Objeto

    6. Arreglo

    7. BinData

    8. ObjectId

    9. Booleano

    10. fecha

    11. Marca de tiempo

    12. Expresión regular

    13. Código JavaScript

    14. Código JavaScript con alcance

    15. MaxKey (tipo interno)

  3. Si los tipos de campo son iguales, compara los nombres de los campos clave.

  4. Si los nombres de los campos clave son iguales, compára los valores de los campos.

  5. Si los valores de los campos son iguales, compara el siguiente par clave/valor (vuelve al paso 1). Un objeto sin pares adicionales es inferior a un objeto con pares adicionales.

Los objetos de fecha se ordenan antes que los objetos de marca de tiempo.

La comparación trata un campo inexistente como si fuera nulo. Una ordenación en el campo a en los documentos { } y { a: null } trataría a los documentos como equivalentes en el orden de ordenación.

MongoDB ordena BinData en el siguiente orden:

  1. Primero, la longitud o el tamaño de los datos.

  2. Luego, por el subtipo BSON de un solo byte.

  3. Finalmente, mediante los datos, realizando una comparación byte a byte sobre bytes sin signo.