Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Trabalhe com dados JSON estendidos

JSON é um formato de dados que representa os valores de objetos, arrays, números, strings, booleans e nulos. O formato Extended JSON define um conjunto reservado de chaves prefixadas com "$" para representar informações de tipos de campos que correspondem diretamente a cada tipo em BSON, o formato usado pelo MongoDB para armazenar dados.

O MongoDB Extended JSON apresenta diferentes formatos de string para representar dados BSON. Cada um dos formatos está em conformidade com o JSON RFC e atende a casos de uso específicos. O formato estendido, também conhecido como formato canônico, apresenta representações específicas para cada tipo BSON para conversão bidirecional sem perda de informações. O formato Modo Relaxado é mais conciso e semelhante ao JSON comum, mas não representa todas as informações de tipo, como a largura de bits específica dos campos numéricos.

Consulte a tabela a seguir para ver uma descrição de cada formato:

Nome
Descrição

Extended

Também conhecido como o formato canônico, essa representação do JSON evita a perda de informações do tipo de BSON.
Esse formato prioriza a preservação do tipo na perda de legibilidade humana e interoperabilidade com formatos mais antigos.

Modo relaxado

Representação JSON que descreve documentos BSON com algum tipo de perda de informação.
Esse formato prioriza a legibilidade humana e a interoperabilidade na perda de determinados tipos de informações.

Para saber mais sobre JSON, BSON e Extended JSON, consulte nosso artigo sobre JSON, BSON e Extended JSON no manual do MongoDB Server .

Os exemplos abaixo mostram um documento contendo um campo de ObjectId, data e número longo representado no formato Extended JSON. Clique na aba correspondente ao formato do exemplo que deseja ver:

{
"_id": { "$oid": "573a1391f29313caabcd9637" },
"createdAt": { "$date": { "$numberLong": "1601499609" }},
"numViews": { "$numberLong": "36520312" }
}

Você pode gravar uma string de JSON estendida a partir de um objeto de documento BSON usando o método EJSON.stringify().

O exemplo a seguir gera uma string de Extended JSON no formato Relaxed:

import { Code, BSON } from 'mongodb';
const EJSON = BSON.EJSON;
const doc = {
foo: [1, 2],
bar: { hello: "world" },
code: new Code("function x() { return 1; }", {}),
date: new Date(2024, 6, 20, 10, 30, 0),
};
const ejsonStr = EJSON.stringify(doc);
console.log(ejsonStr);

Por padrão, o método stringify() retorna a string de JSON estendida no formato relaxado. Para especificar o formato canônico, configure a opção relaxed para false.

O exemplo a seguir mostra como gerar JSON estendido no formato canônico:

import { Code, BSON } from 'mongodb';
const EJSON = BSON.EJSON;
const doc = {
foo: [1, 2],
bar: { hello: "world" },
code: new Code("function x() { return 1; }", {}),
date: new Date(2024, 6, 20, 10, 30, 0),
};
const ejsonStr = EJSON.stringify(doc, { relaxed: false });
print(ejsonStr)

Você pode ler uma string de JSON estendida no valor ou objeto JavaScript descrito pela string usando o método EJSON.parse().

O exemplo abaixo mostra como ler uma string de JSON estendida em um valor ou objeto JavaScript usando o método parse():

import { BSON } from 'mongodb';
const EJSON = BSON.EJSON;
const ejsonStr = `{
"foo": [
{ "$numberInt": "1" },
{ "$numberInt": "2" }
],
"bar": { "hello": "world" },
"code": {
"$code": "function x() { return 1; }",
"$scope": {}
},
"bin": { "$binary": { "base64": "AQIDBA==", "subType": "00" } }
}`;
const doc = EJSON.parse(ejsonStr);
console.log(doc);

Observação

O driver analisa o tipo de JSON estendido $uuid de uma string para um objeto BsonBinary de subtipo binário 4. Para obter mais informações sobre a análise do campo $uuid, consulte a seção Regras especiais para analisar campos $uuid na especificação de JSON estendido.

Aviso

Valide entradas não confiáveis antes de converter JSON em BSON

Se você converter uma string JSON para BSON e usar o BSON resultante em uma query, atualizar ou comando, um invasor pode injetar operadores ou valores de campo inesperados que alteram o significado da operação. Esse risco é maior quando o JSON se origina de um usuário, uma solicitação de API ou outra fonte não confiável.

To learn more about validating input before conversion, see Validate Untrusted Input Before Converting JSON to BSON.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a documentação da API EJSON.