Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Ordem de comparação/classificação

Nesta página

  • Tipos Numéricos
  • Strings
  • arrays
  • Objetos
  • Datas e Registros de Data e Hora
  • Campos inexistentes
  • 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, duplos, decimais)

  4. Símbolo, string

  5. Objeto

  6. Array

  7. BinData

  8. ObjectId

  9. Boolean

  10. Data

  11. Timestamp

  12. Expressão regular

  13. MaxKey (tipo interno)

Observação

$range operadores de query e aggregation executam comparações somente em campos onde o tipo JSON corresponde ao tipo de valor da query. O MongoDB oferece suporte à comparação limitada entre BSON por meio de colchetes de tipo.

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 collection 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:

  • Uma comparação menor que, ou uma classificação ascendente, compara os menores elementos da array de acordo com a ordem de classificação do tipo de BSON.

  • Uma comparação maior que, ou uma classificação decrescente, compara os maiores elementos da array de acordo com a ordem de classificação inversa do tipo BSON.

  • Ao comparar um campo cujo valor é uma matriz de um elemento (por exemplo, [ 1 ]) com campos não-array (por exemplo, 2), a comparação é de 1 e 2.

  • Uma comparação de uma array vazia (exemplo, [ ]) considera a array vazia como menor que um valor de null ou um valor de campo ausente.

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, duplos, decimais)

    4. Símbolo, string

    5. Objeto

    6. Array

    7. BinData

    8. ObjectId

    9. Boolean

    10. Data

    11. Timestamp

    12. Expressão regular

    13. MaxKey (tipo interno)

    Aviso

    Fornecer um padrão de classificação com campos duplicados causa um erro.

  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.

A comparação trata um campo inexistente como se fosse um objeto BSON vazio. Como tal, uma classificação no campo a em documentos { } e { a: null } trataria os documentos como equivalentes em ordem de classificação.

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. Finalmente, pelos dados, realizando uma comparação byte-by-byte.

← Tipos de JSON