Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Ordem de comparação/classificação

Nesta página

  • Tipos Numéricos
  • Strings
  • arrays
  • Objetos
  • Datas e Registros de Data e Hora
  • Non-existent Fields
  • BinData

Ao comparar valores de diferentes tipos de BSON em operações de ordenação, o MongoDB usa a seguinte ordem de comparação, da menor para a maior:

  1. MinKey (tipo interno)

  2. Zero

  3. Números (inteiros, longos, doubles, decimais)

  4. Símbolo, string

  5. Objeto

  6. Array

  7. BinData

  8. ObjectId

  9. Boolean

  10. Data

  11. Timestamp

  12. Expressão regular

  13. Código JavaScript

  14. MaxKey (tipo interno)

Observação

Range query operators perform comparisons only on fields where the BSON type matches the query value's type. MongoDB enforces comparisons with Comparison Query Operators only on documents where the BSON type of the target field matches the query operand type through Type Bracketing.

O MongoDB trata alguns tipos como equivalentes para fins de comparação. Por exemplo, tipos numéricos passam por conversão antes da comparação.

Por padrão, o MongoDB usa a comparação binária simples para comparar linhas.

A colocação permite que os usuários especifiquem regras específicas do idioma para comparação de strings, como regras para letras maiúsculas e marcas de acento.

A especificação de correlação tem a seguinte sintaxe:

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

Ao especificar agrupamento, o campo locale é obrigatório; todos os outros campos de agrupamento são opcionais. Para obter descrições dos campos, consulte Documento de agrupamento.

Se nenhum agrupamento for especificado para a coleção ou para as operações, o MongoDB usa a comparação binária simples usada nas versões anteriores para comparações de strings.

Em comparações de arrays:

  • An ascending sort compares the smallest elements of the array according to the BSON type sort order.

  • A descending sort compares the largest elements of the array according to the reverse BSON type sort order.

  • Comparison Query Operators, such as $lt and $gt, perform comparisons on arrays lexicographically.

  • When comparing a field whose value is a one element array (for example, [ 1 ]) with non-array fields (for example, 2), the comparison is for 1 and 2.

  • A comparison of an empty array (for example, [ ]) considers the empty array as less than a null value or a missing field value.

  • A comparison of a nested array (for example, [[1, 2], [3, 4]]) compares any array after the outmost array lexicographically.

Observação

Comparison Query Operators enforce type-bracketing when the query is an array. If the indexed value is an array, the operator performs a type-bracketed comparison element-wise over the indexed array.

A comparação do MongoDB de objetos BSON usa a seguinte ordem:

  1. Compare recursivamente os pares de valores-chave na ordem em que aparecem no objeto BSON.

  2. Compare os tipos de campo. O MongoDB utiliza a seguinte ordem de comparação para tipos de campo, do mais baixo para o mais alto:

    1. MinKey (tipo interno)

    2. Zero

    3. Números (inteiros, longos, doubles, decimais)

    4. Símbolo, string

    5. Objeto

    6. Array

    7. BinData

    8. ObjectId

    9. Boolean

    10. Data

    11. Timestamp

    12. Expressão regular

    13. Código JavaScript

    14. MaxKey (tipo interno)

  3. Se os tipos de campo forem iguais, compare os nomes dos campos principais.

  4. Se os nomes dos campos-chave forem iguais, compare os valores dos campos.

  5. Se os valores de campo forem iguais, compare o próximo par chave/valor (retornar à etapa 1). Um objeto sem pares adicionais é menor que um objeto com pares adicionais.

Os objetos data são classificados antes dos objetos de Registro de data e hora.

The comparison treats a non-existent field as if it were null. A sort on the a field in documents { } and { a: null } would treat the documents as equivalent in sort order.

O MongoDB classifica BinData na seguinte ordem:

  1. Primeiro, o comprimento ou tamanho dos dados.

  2. Em seguida, pelo subtipo de um byte BSON.

  3. Finally, by the data, performing a byte-by-byte comparison on unsigned bytes.

Voltar

Tipos de JSON