Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

JSON extendido

En esta guía, puede aprender a utilizar el formato de datos JSON extendido cuando interactúe con documentos de MongoDB.

JSON es un formato de datos legible por humanos que representa los valores de objetos, arreglos, números, cadenas, booleanos y nulos. Este formato solo admite un subconjunto de tipos de datos BSON, que es el formato que utiliza MongoDB para almacenar datos. El formato Extended JSON admite más BSON types, definiendo un conjunto reservado de claves con el prefijo "$" para representar información del tipo de campo que corresponde directamente a cada tipo en BSON.

Para obtener más información sobre JSON, BSON y JSON extendido, consulta el recurso JSON y BSON y la entrada del manual JSON extendido de MongoDB Server.

MongoDB Extended JSON proporciona formatos de string para representar datos BSON. Cada formato cumple con la RFC JSON y satisface casos de uso específicos.

La siguiente tabla describe cada formato JSON extendido:

Nombre
Descripción

Canónico

Un formato de string que evita la pérdida de información de tipo BSON durante las conversiones de datos.
Este formato prioriza la preservación de tipos a costa de la legibilidad humana y la interoperabilidad con formatos más antiguos. Para especificar este modo, pase bsoncxx::ExtendedJsonMode::k_canonical como argumento mode al método to_json().

Relajado

Un formato de string que describe documentos BSON con cierta pérdida de información de tipo.
Este formato prioriza la legibilidad humana y la interoperabilidad a costa de cierta información de tipo. Para especificar este modo, pase bsoncxx::ExtendedJsonMode::k_relaxed como argumento mode al método to_json().

Legacy

Un formato de string que describe documentos BSON con cierta pérdida de información de tipo.
Este formato coincide con Relaxed Extended JSON con algunas excepciones.
El driver de C++ utiliza esta moda por defecto.

Nota

El driver C++ analiza el tipo $uuid Extended JSON de una string a un objeto b_binary de subtipo binario 4. Para obtener más información acerca del análisis de campos $uuid, consulte la sección reglas especiales para analizar campos $uuid en la especificación del Extended JSON.

Los siguientes ejemplos muestran un documento que contiene un campo ObjectId, una fecha y un número largo representado en cada formato Extendido de JSON. Haz clic en la pestaña que corresponda al formato del ejemplo que desees ver:

{
"_id": { "$oid": "573a1391f29313caabcd9637" },
"createdAt": { "$date": { "$numberLong": "1601499609" }},
"numViews": { "$numberLong": "36520312" }
}
{
"_id": { "$oid": "573a1391f29313caabcd9637" },
"createdAt": { "$date": "2020-09-30T18:22:51.648Z" },
"numViews": 36520312
}
{
"_id": { "$oid": "573a1391f29313caabcd9637" },
"createdAt": { "$date": "1601499771648" },
"numViews": 36520312
}

Se puede leer una string Extended JSON en un documento BSON de C++ llamando al método bsoncxx::from_json(). Este método analiza una string Extended JSON y devuelve un bsoncxx::document::value que contiene los datos.

El siguiente ejemplo muestra cómo puede leer un string JSON extendido en un documento BSON utilizando el método from_json():

bsoncxx::document::value doc = bsoncxx::from_json(R"(
{
"_id": {"$oid": "507f1f77bcf86cd799439011"},
"myNumber": {"$numberLong": "4794261"}
}
)");

Puedes guardar una cadena Extended JSON utilizando el método bsoncxx::to_json(). Por defecto, este método devuelve la string JSON extendida en el formato heredado, pero puedes especificar formatos canónicos o relajados pasando un argumento mode.

Nota

Versión heredada

La opción de formato heredado indica al driver C++ que serialice los BSON types usando el formato Libbson Legacy Extended JSON. El driver utiliza esto como el modo por defecto.

Para obtener más información, consulta la página de Legacy Extended JSON en la documentación de la API del Driver C.

El método bsoncxx::to_json() está disponible para varios tipos del núcleo y de la librería estándar, incluidos array y document. El siguiente ejemplo convierte un valor document en una cadena Extended JSON en el formato canónico:

bsoncxx::builder::basic::document doc_builder;
doc_builder.append(kvp("myNumber", 11223344));
doc_builder.append(kvp("myString", "String value"));
bsoncxx::document::value doc = doc_builder.extract();
std::string json_str =
bsoncxx::to_json(doc, bsoncxx::ExtendedJsonMode::k_canonical);
std::cout << json_str << std::endl;
{"myNumber":{"$numberInt":"11223344"},"myString":"String value"}

Para obtener más información sobre los tipos y métodos mencionados en esta guía, consulta la siguiente documentación de la API:

Para obtener más información sobre el Extended JSON, consulte MongoDB Extended JSON (v2) en el manual del servidor de MongoDB.