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.
JSON estándar (application/json)
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.
EJSON canónico y relajado (application/ejson)
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.
BSON Types
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.
Arreglo
EJSON | JSON | ||
|---|---|---|---|
Canonical EJSON Relaxed EJSON Same as Canonical | |
Binario
EJSON | JSON | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Canonical EJSON Relaxed EJSON Same as Canonical | |
fecha
EJSON | JSON | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
Canonical EJSON Relaxed EJSON | |
Decimal128
EJSON | JSON | ||
|---|---|---|---|
Canonical EJSON Relaxed EJSON Same as Canonical | |
Documento
EJSON | JSON | ||
|---|---|---|---|
Canonical EJSON Relaxed EJSON Same as Canonical | |
Double
EJSON | JSON | |||
|---|---|---|---|---|
Canonical EJSON Relaxed EJSON | |
Int32
EJSON | JSON | |||
|---|---|---|---|---|
Canonical EJSON Relaxed EJSON | |
Int64
EJSON | JSON | ||
|---|---|---|---|
Canonical EJSON Relaxed EJSON Same as Canonical | |
Clave máxima
EJSON | JSON | ||
|---|---|---|---|
Canonical EJSON Relaxed EJSON Same as Canonical | Sin equivalente en JSON |
MinKey
EJSON | JSON | ||
|---|---|---|---|
Canonical EJSON Relaxed EJSON Same as Canonical | Sin equivalente en JSON |
ObjectId
EJSON | JSON | ||
|---|---|---|---|
Canonical EJSON Relaxed EJSON Same as Canonical | |
Expresión regular
EJSON | JSON | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Canonical EJSON Relaxed EJSON Same as Canonical | |
Marca de tiempo
EJSON | JSON | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Canonical EJSON Relaxed EJSON Same as Canonical | |