MongoDB Extended JSON (v2)
Importante
Desambiguação
A página a seguir aborda o MongoDB Extended JSON v2. Para saber mais sobre o Legacy MongoDB Extended JSON v1, consulte MongoDB Extended JSON (v1).
Para tipos de dados suportados no , consulte mongosh
tipos de dados mongosh.
O JSON só pode representar diretamente um subconjunto dos tipos suportados pelo BSON. Para preservar informações de tipo, MongoDB adiciona as seguintes extensões ao formato JSON.
- Modo canônico
- Um formato de string que enfatiza a preservação do tipo às custas de legibilidade e interoperabilidade. Ou seja, conversão de canônico para BSON geralmente preservará informações de tipo, exceto em certos casos específicos.
- Modo relaxado
- Um formato de string que enfatiza a legibilidade e a interoperabilidade às custas da preservação do tipo. Ou seja, a conversão de formato relaxado para BSON pode perder informações de tipo.
Ambos os formatos estão em conformidade com o JSON RFC e podem ser analisados pelos vários drivers e ferramentas do MongoDB.
Uso estendido do MongoDB JSON v2
Drivers
Os drivers a seguir usam o JSON estendido v2.0
|
|
|
Para C# e Ruby que usam Extended JSON do MongoDB herdado v1, consulte o Extended JSON do MongoDB (v1).
Ferramentas do banco de dados MongoDB
A partir da versão 4.2:
Binário | Mudanças |
---|---|
Utiliza o formato JSON v2.0 estendido (modo canônico). | |
Usar JSON estendido v2.0 (Modo canônico) para os metadados. Requer a versão Em geral, use versões correspondentes de | |
Creates output data in Extended JSON v2.0 (Relaxed mode) by
default. Creates output data in Extended JSON v2.0 (Canonical mode) if
used with --jsonFormat . | |
Expects import data to be in Extended JSON v2.0 (either
Relaxed or Canonical mode) by default. Can recognize data that is in Extended JSON v1.0 format if the option
--legacy is specified.Em geral, as versões do |
Tipos de dados JSON e representações associadas
A seguir, são apresentados alguns tipos de dados BSON comuns e as representações associadas em Canonical e Relaxed.
A lista completa está aqui.
Canônico | Descontraído | ||
---|---|---|---|
|
|
Onde os elementos da array são os seguintes:
<elements>
Os elementos da array usam Extended JSON.
Para especificar uma array vazia, omita o conteúdo
[ ]
.
Canônico | Descontraído | |||||||
---|---|---|---|---|---|---|---|---|
|
|
Onde os valores são os seguintes:
"<payload>"
Cadeia de caracteres de carga codificada Base64 (com preenchimento como "=").
"<t>"
Uma string hexadecimal de um ou dois caracteres que corresponde a um subtipo binário BSON. Consulte a documentação estendida do bson http://bsonspec.org/spec.html para conhecer os subtipos disponíveis.
Para datas entre os anos 1970 e 9999, inclusive:
Canônico | Descontraído | ||
---|---|---|---|
|
|
Para datas anteriores ao ano 1970 ou posteriores ao ano 9999:
Canônico | Descontraído | ||
---|---|---|---|
|
|
Onde os valores são os seguintes:
"<millis>"
Um inteiro assinado de 64 bits como string. O valor representa milissegundos em relação à época.
"<ISO-8601 Date/Time Format>"
Uma data no formato ISO-8601 de data/hora da Internet como string.
A data/hora tem uma precisão de tempo máxima de milissegundos:
Segundos fracionários têm exatamente 3 casas decimais se a parte fracionária não for zero.
Caso contrário, segundos fracionários DEVEM ser omitidos se zero.
Novidade na versão 3.4.
Canônico | Descontraído | ||
---|---|---|---|
|
|
Onde os valores são os seguintes:
"<number>"
Um decimal de alta precisão como uma string.
Canônico | Descontraído | ||
---|---|---|---|
|
|
Onde o conteúdo do documento é o seguinte:
<content>
Nome:pares de valores que usam JSON estendido.
Para especificar um documento vazio, omita o conteúdo
{ }
.
Para números finitos:
Canônico | Descontraído | ||
---|---|---|---|
|
|
Para números infinitos ou NAN:
Canônico | Descontraído | ||
---|---|---|---|
|
|
Onde os valores são os seguintes:
"<decimal string>"
Um ponto flutuante assinado de 64-bit como uma string.
<non-integer number>
Um número não inteiro. Números inteiros são analisados como um inteiro em vez de um double.
Canônico | Descontraído | ||
---|---|---|---|
|
|
Onde os valores são os seguintes:
"<number>"
Um inteiro assinado de 64 bits como string.
<integer>
Um número inteiro assinado de 64 bits.
Canônico | Descontraído | ||
---|---|---|---|
|
|
Onde os valores são os seguintes:
"<number>"
Um inteiro assinado de 32 bits como string.
<integer>
Um número inteiro assinado de 32 bits.
Canônico | Descontraído | ||
---|---|---|---|
|
|
O tipo de dados MaxKey BSON compara mais alto do que todos os outros tipos. Consulte Comparação/Ordem de Classificação para obter mais informações sobre a ordem de comparação dos tipos de BSON.
Canônico | Descontraído | ||
---|---|---|---|
|
|
O tipo de dados MinKey BSON é comparado abaixo de todos os outros tipos. Consulte Comparação/Ordem de Classificação para obter mais informações sobre a ordem de comparação dos tipos de BSON.
Canônico | Descontraído | ||
---|---|---|---|
|
|
Onde os valores são os seguintes:
"<ObjectId bytes>"
Uma cadeia hexadecimal grande e de 24 caracteres que representa os bytes ObjectId.
Canônico | Descontraído | |||||||
---|---|---|---|---|---|---|---|---|
|
|
Onde os valores são os seguintes:
"<regexPattern>"
Uma string que corresponde ao padrão de expressão regular. A string pode conter caracteres JSON válidos e caracteres de aspas duplas sem recapitulação (
"
), mas não pode conter caracteres de barra invertida sem recapitulação (/
).
"<options>"
Uma string que especifica opções de expressão regular BSON. Você deve especificar as opções em ordem alfabética. Para obter informações sobre as opções aceitas, consulte
$options
.
Canônico | Descontraído | ||
---|---|---|---|
|
|
Onde os valores são os seguintes:
<t>
Um número inteiro positivo para os segundos desde a época.
<i>
Um número inteiro positivo para o incremento.
Exemplo
Nome do campo de exemplo | Formato canônico | Formato relaxado |
---|---|---|
"_id:" | {"$oid":"5d505646cf6d4fe581014ab2"} | {"$oid":"5d505646cf6d4fe581014ab2"} |
"arrayField": | ["hello",{"$numberInt":"10"}] | ["hello",10] |
"dateField": | {"$date":{"$numberLong":"1565546054692"}} | {"$date":"2019-08-11T17:54:14,692Z"} |
"dateBefore1970": | {"$date":{"$numberLong":"-1577923200000"}} | {"$date":{"$numberLong":"-1577923200000"}} |
"decimal128Field": | {"$numberDecimal":"10,99"} | {"$numberDecimal":"10,99"} |
"documentField": | {"a":"hello"} | {"a":"hello"} |
"doubleField": | {"$numberDouble":"10,5"} | 10.5 |
"infiniteNumber" | {"$numberDouble":"infinity"} | {"$numberDouble":"infinity"} |
"int32field": | {"$numberInt":"10"} | 10 |
"int64Field": | {"$numberLong":"50"} | 50 |
"minKeyField": | {"$minKey":1} | {"$minKey":1} |
"maxKeyField": | {"$maxKey":1} | {"$maxKey":1} |
"regexField": | {"$regularExpression":{"pattern":"^H","options":"i"}} | {"$regularExpression":{"pattern":"^H","options":"i"}} |
"timestampField": | {"$timestamp":{"t":1565545664,"i":1}} | {"$timestamp":{"t":1565545664,"i":1}} |