Docs Menu
Docs Home
/ /

Orden de comparación/clasificación

Al comparar valores de diferentes Tipos BSON en operaciones de clasificación, MongoDB utiliza el siguiente orden de comparación, del más bajo al más alto:

  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 permiten realizar comparaciones entre tipos. Para más información, consulte Operadores de comparación.

Nota

MongoDB aplica comparaciones con operadores de predicado de consulta de comparación solo en documentos donde el tipo BSON del campo de destino coincide con el tipo de operando de consulta a través del corchete de tipos.

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

De forma predeterminada, 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 locale Este campo es obligatorio; todos los demás campos de intercalación son opcionales. Para obtener descripciones de los campos, consulte el 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.

En comparaciones de matrices:

  • Una ordenación ascendente compara los elementos más pequeños de la matriz según el orden de clasificación de tipo BSON.

  • Una ordenación descendente compara los elementos más grandes de la matriz según el orden de clasificación de tipo BSON inverso.

  • Los operadores de predicado de consulta de comparación, como y, realizan $lt comparaciones en matrices lexicográficamente.$gt

  • Al comparar un campo cuyo valor es una matriz de un elemento (por ejemplo, [ 1 ]) con campos que no son matrices (por ejemplo, 2), la comparación es para 1 y 2.

  • Una comparación de una matriz vacía (por ejemplo, [ ]) considera que la matriz vacía es menor que un valor null o un valor de campo faltante.

  • Una comparación de una matriz anidada (por ejemplo, [[1, 2], [3, 4]]) compara lexicográficamente cualquier matriz después de la matriz más externa.

Nota

Los operadores de predicado de consulta de comparación aplican el uso de corchetes de tipo cuando la consulta es una matriz. Si el valor indexado es una matriz, el operador realiza una comparación con corchetes de tipo elemento por elemento sobre la matriz indexada.

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

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

  2. Comparar los tipos de campo. MongoDB utiliza el siguiente orden de comparación para los tipos de campo, 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, compare los nombres de los campos clave.

  4. Si los nombres de los campos clave son iguales, compare los valores de los campos.

  5. Si los valores de los campos son iguales, compare el siguiente par clave-valor (regrese al paso 1). Un objeto sin más pares es menor que un objeto con más pares.

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 del campo a en los documentos { } y { a: null } trataría los documentos como equivalentes en el orden de clasificación.

MongoDB ordena BinData en el siguiente orden:

  1. En primer lugar, la longitud o tamaño de los datos.

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

  3. Finalmente, a partir de los datos, se realiza una comparación byte a byte en los bytes sin signo.

Volver

BSON Types

En esta página