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 cambio, la API de datos utiliza dos formatos para representar 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 se puede representar en JSON o EJSON y muestra los tipos BSON 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 en algunos campos. Por ejemplo, BSON tiene tipos distintos para 32enteros de bits y 64flotantes de bits, pero una respuesta JSON representa ambos number como.

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.

Hay dos variantes de EJSON:

  • EJSON canónico utiliza una estructura verbosa que prioriza la conservación de tipos en detrimento de la legibilidad y la interoperabilidad. Representa completamente los tipos BSON, pero podría requerir una biblioteca o código personalizado para trabajar con él.

  • 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.

Puede usar EJSON canónico o relajado en los cuerpos de las solicitudes. Los puntos finales de la API de datos configurados para devolver EJSON siempre devuelven EJSON canónico.

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

EJSON canónico

[ <elements> ]

EJSON relajado

Igual que Canonical

[ <elements> ]
EJSON
JSON

EJSON canónico

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

EJSON relajado

Igual que Canonical

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

EJSON canónico

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

EJSON relajado

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

EJSON canónico

{ "$numberDecimal": "9823.1297" }

EJSON relajado

Igual que Canonical

"9823.1297"
EJSON
JSON

EJSON canónico

{ <content> }

EJSON relajado

Igual que Canonical

{ <content> }
EJSON
JSON

EJSON canónico

{ "$numberDouble": "10.5" }

EJSON relajado

10.5
10.5
EJSON
JSON

EJSON canónico

{ "$numberInt": "10" }

EJSON relajado

10
10
EJSON
JSON

EJSON canónico

{ "$numberLong": "50" }

EJSON relajado

Igual que Canonical

50
EJSON
JSON

EJSON canónico

{ "$maxKey": 1 }

EJSON relajado

Igual que Canonical

{}

No hay equivalente JSON

EJSON
JSON

EJSON canónico

{ "$minKey": 1 }

EJSON relajado

Igual que Canonical

{}

No hay equivalente JSON

EJSON
JSON

EJSON canónico

{ "$oid":"5d505646cf6d4fe581014ab2" }

EJSON relajado

Igual que Canonical

"5d505646cf6d4fe581014ab2"
EJSON
JSON

EJSON canónico

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

EJSON relajado

Igual que Canonical

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

EJSON canónico

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

EJSON relajado

Igual que Canonical

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

Volver

Autenticar solicitudes de API de datos

En esta página