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

Extendido o 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.

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. El driver .NET/C# utiliza el modo relajado por defecto.

Shell

Un formato de string que coincide con la sintaxis utilizada en el shell de MongoDB.
Este formato prioriza la compatibilidad con el shell de MongoDB, que a menudo utiliza funciones de JavaScript para representar tipos.

reglas especiales para analizar campos $uuid

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": ObjectId("573a1391f29313caabcd9637"),
"createdAt": ISODate("2020-09-30T18:22:51.648Z"),
"numViews": NumberLong("36520312")
}

Puedes leer un documento Extended JSON en un objeto C# mediante el método BsonDocument.Parse(). El siguiente ejemplo lee un documento Extended JSON en un objeto BsonDocument:

var ejson = "{\n\"_id\": { \"$oid\": \"573a1391f29313caabcd9637\" },\n \"createdAt\": { \"$date\": { \"$numberLong\": \"1601499609\" }},\n\"numViews\": { \"$numberLong\": \"36520312\" }\n}\n\n";
var document = BsonDocument.Parse(ejson);
Console.WriteLine(document.ToJson());
{ "_id" : { "$oid" : "573a1391f29313caabcd9637" }, "createdAt" : { "$date" : "1970-01-19T12:51:39.609Z" }, "numViews" : 36520312 }

Puedes escribir una string Extended JSON llamando al método ToJson() en un objeto de BsonDocument o clase personalizada. Debe especificar un objeto JsonWriterSettings con la propiedad OutputMode configurada en el formato Extended JSON deseado como parámetro.

Considera la siguiente clase personalizada:

public class MyDocument
{
public ObjectId Id { get; set; }
public DateTime CreatedAt { get; set; }
public long NumViews { get; set; }
}

El siguiente ejemplo genera una instancia de MyDocument en formato JSON extendido especificando el valor CanonicalExtendedJson como una propiedad OutputMode:

var document = new MyDocument();
document.Id = ObjectId.GenerateNewId();
document.CreatedAt = DateTime.UtcNow;
document.NumViews = 1234567890;
var json = document.ToJson(new JsonWriterSettings
{
OutputMode = JsonOutputMode.CanonicalExtendedJson
});
Console.WriteLine(json);
{ "_id" : { "$oid" : "68094769744af81f368ff1c1" }, "CreatedAt" : { "$date" : { "$numberLong" : "1745438569994" } }, "NumViews" : { "$numberLong" : "1234567890" } }

Para obtener más información sobre los métodos y clases que puedes usar para trabajar con documentos JSON, consulta la siguiente documentación de la API: