Docs Menu
Docs Home
/ /

JSON extendido

En esta guía, puede aprender a utilizar el formato de datos JSON extendido al interactuar con documentos MongoDB.

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

Para obtener más información sobre JSON, BSON y JSON extendido, consulte Entrada manual del servidorMongoDB JSON, BSON y recursos JSON extendidos.

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

Extendidoo canónico

A string format that avoids loss of BSON type information during data conversions.
This format prioritizes type preservation at the loss of human-readability and interoperability with older formats.

Relajado

A string format that describes BSON documents with some type information loss.
This format prioritizes human-readability and interoperability at the loss of certain type information. The .NET/C# Driver uses Relaxed mode by default.

Shell

A string format that matches the syntax used in the MongoDB shell.
This format prioritizes compatibility with the MongoDB shell, which often uses JavaScript functions to represent types.

Nota

El driver .NET /C# analiza el tipo de JSON extendido $uuid desde una string hasta un objeto BsonBinaryData de subtipo binario 4. Para más información sobre el análisis del campo $uuid, consulte la sección reglas especiales para el análisis de campos $uuid en la especificación JSON extendida.

Los siguientes ejemplos muestran un documento que contiene un campo ObjectId, una fecha y un número largo, representados en cada formato JSON extendido. Haga clic en la pestaña correspondiente al formato del ejemplo que desea 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 documentos JSON extendidos en un objeto de C# mediante el método BsonDocument.Parse(). El siguiente ejemplo lee un documento JSON extendido 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 }

Puede escribir una cadena JSON extendida llamando al método ToJson() en un objeto BsonDocument o una clase personalizada. Debe especificar un objeto JsonWriterSettings con la propiedad OutputMode establecida en el formato JSON extendido deseado como parámetro.

Considere 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 puede utilizar para trabajar con documentos JSON, consulte la siguiente documentación de API:

Volver

BSON

En esta página