Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Data API

Data Formats

MongoDB almacena datos en un formato llamado BSON, que es similar a un objeto JSON en estructura, pero admite tipos de datos adicionales y utiliza codificación binaria. BSON es eficiente para computadoras, pero no es legible para humanos, por lo que no se puede trabajar con él directamente.

En su lugar, la API de datos utiliza dos formatos para representar los datos en solicitudes y respuestas: JSON y EJSON.

Se define un único tipo de retorno predeterminado para todos los puntos finales de la API de datos generados e individualmente para cada punto final personalizado. Las solicitudes entrantes también pueden especificar un formato de datos preferido que anule el predeterminado mediante un Accept encabezamiento.

Ejemplo

Este documento puede representarse en JSON o EJSON. Muestra los BSON types representados en JSON y EJSON.

{
"Name": "Mango",
"Year": { "$numberLong": "2022" },
"Weight": { "$numberDecimal": "9823.1297" },
"Date": { "$date": { "$numberLong": "1641954803067" } }
}
{
"Name": "Mango",
"Year": 2022,
"Weight": "9823.1297",
"Date": "2022-01-12T02:33:23.067Z"
}

Define un único tipo de retorno predeterminado para todos los puntos finales de la API de datos generados e individualmente para cada punto final personalizado. Las solicitudes entrantes también pueden especificar un formato de datos preferido que anule el predeterminado mediante un encabezado Accept.

El formato JSON utiliza tipos estándar que cualquier herramienta puede analizar y comprender. Sin embargo, JSON no puede representar todos los tipos BSON, por lo que las respuestas JSON pueden perder información de tipo para algunos campos. Por ejemplo, BSON tiene tipos distintos para enteros de 32 bits y números flotantes de 64 bits, pero una respuesta JSON representa ambos como un number.

El formato EJSON, abreviatura de MongoDB Extended JSON, es un superconjunto del JSON estándar que utiliza campos estructurados para representar datos BSON que no tienen tipos JSON correspondientes. Esto representa completamente tus datos, pero requiere que tu cliente entienda cómo trabajar con EJSON.

There are two variants of EJSON:

  • Canonical EJSON uses a verbose structure that emphasizes type preservation at the expense of readability and interoperability. It fully represents BSON types but you may need to use a library or custom code to work with it.

  • El EJSON relajado utiliza una estructura más compacta, más fácil de leer y usar, pero puede perder información de tipo para algunos tipos BSON. Por ejemplo, un campo numérico en un documento insertado podría inferirse como un tipo BSON numérico diferente al esperado.

You can use either Canonical or Relaxed EJSON in request bodies. Data API endpoints that are configured to return EJSON always return Canonical EJSON.

Esta sección enumera los tipos BSON que admite la API de datos y muestra cómo se representa cada tipo en formato JSON y EJSON.

EJSON
JSON

Canonical EJSON

[ <elements> ]

Relaxed EJSON

Same as Canonical

[ <elements> ]
EJSON
JSON

Canonical EJSON

{
"$binary": {
"base64": "e67803a39588be8a95731a21e27d7391",
"subType": "05"
}
}

Relaxed EJSON

Same as Canonical

{
"Subtype": 5,
"Data": "e67803a39588be8a95731a21e27d7391"
}
EJSON
JSON

Canonical EJSON

{
"$date": {
"$numberLong": "1641954803067"
}
}

Relaxed EJSON

{
"$date": "2022-01-12T02:33:23.067Z"
}
"2022-01-12T02:33:23.067Z"
EJSON
JSON

Canonical EJSON

{ "$numberDecimal": "9823.1297" }

Relaxed EJSON

Same as Canonical

"9823.1297"
EJSON
JSON

Canonical EJSON

{ <content> }

Relaxed EJSON

Same as Canonical

{ <content> }
EJSON
JSON

Canonical EJSON

{ "$numberDouble": "10.5" }

Relaxed EJSON

10.5
10.5
EJSON
JSON

Canonical EJSON

{ "$numberInt": "10" }

Relaxed EJSON

10
10
EJSON
JSON

Canonical EJSON

{ "$numberLong": "50" }

Relaxed EJSON

Same as Canonical

50
EJSON
JSON

Canonical EJSON

{ "$maxKey": 1 }

Relaxed EJSON

Same as Canonical

{}

Sin equivalente en JSON

EJSON
JSON

Canonical EJSON

{ "$minKey": 1 }

Relaxed EJSON

Same as Canonical

{}

Sin equivalente en JSON

EJSON
JSON

Canonical EJSON

{ "$oid":"5d505646cf6d4fe581014ab2" }

Relaxed EJSON

Same as Canonical

"5d505646cf6d4fe581014ab2"
EJSON
JSON

Canonical EJSON

{
"$regularExpression": {
"pattern":"^H",
"options":"i"
}
}

Relaxed EJSON

Same as Canonical

{
"Pattern": "^H",
"Options": "i"
}
EJSON
JSON

Canonical EJSON

{
"$timestamp": {
"t":1565545664,
"i":1
}
}

Relaxed EJSON

Same as Canonical

{
"T": 1565545664,
"I": 1
}

Volver

Autenticar solicitudes de API de datos

En esta página