Docs Menu
Docs Home
/ /

Operaciones BSON

En esta guía, puede aprender a crear documentos BSON, leer BSON desde un archivo y escribir BSON en un archivo utilizando el controlador .NET/C#.

BSON, o JSON binario, es el formato de datos que MongoDB utiliza para organizar y almacenar datos. Este formato incluye todos los tipos de estructuras de datos JSON y admite tipos como fechas, enteros de diferentes tamaños, ObjectIds y datos binarios. Para obtener una lista completa de los tipos admitidos, consulte Página del manual del servidorde tipos BSON.

Los ejemplos de código de esta guía utilizan el siguiente documento BSON como ejemplo:

{
"address" : {
"street" : "Pizza St",
"zipcode" : "10003"
},
"coord" : [-73.982419, 41.579505]
"cuisine" : "Pizza",
"name" : "Mongo's Pizza"
}

Para crear un documento BSON en C#, cree una instancia del BsonDocument Clase. El constructor BsonDocument acepta argumentos BsonElement que corresponden a los campos y valores del documento. Cada BsonElement puede ser una instancia de la clase BsonElement o un par campo-valor entre llaves ( {} ).

El siguiente ejemplo de código muestra cómo crear un objeto BsonDocument para representar el documento BSON de ejemplo. Cada par clave-valor del objeto BsonDocument es un objeto BsonElement.

var newRestaurant = new BsonDocument
{
{ "address", new BsonDocument
{
{ "street", "Pizza St" },
{ "zipcode", "10003" }
}
},
{ "coord", new BsonArray
{-73.982419, 41.579505 }
},
{ "cuisine", "Pizza" },
{ "name", "Mongo's Pizza"}
};

La clase BsonDocument incluye métodos que permiten modificar el contenido del documento BSON. El siguiente ejemplo de código realiza tres cambios en el objeto BsonDocument anterior:

  1. Agrega un nuevo campo, "restaurant_id", con el valor "12345"

  2. Elimina el campo "cuisine"

  3. Establece el valor del campo "name" en "Mongo's Pizza Palace"

var newRestaurant = new BsonDocument
{
{ "address", new BsonDocument
{
{ "street", "Pizza St" },
{ "zipcode", "10003" }
}
},
{ "coord", new BsonArray
{-73.982419, 41.579505 }
},
{ "cuisine", "Pizza" },
{ "name", "Mongo's Pizza"}
};
newRestaurant.Add(new BsonElement("restaurant_id", "12345"));
newRestaurant.Remove("cuisine");
newRestaurant.Set("name", "Mongo's Pizza Palace");

Nota

Para obtener una lista completa de los métodos de la BsonDocument clase, consulte la documentación de la API.

Puede escribir BSON en un archivo utilizando los métodos de la clase BsonBinaryWriter. Para escribir en un archivo, siga estos pasos:

  1. Abra una secuencia de archivos para el archivo que contiene datos BSON.

  2. Crea un BsonBinaryWriter usando la secuencia de archivos.

  3. Para cada documento y subdocumento BSON que desee crear, llame a WriteStartDocument().

  4. En cada documento y subdocumento BSON, llame a WriteName() para establecer el nombre del campo y el método Write* apropiado para establecer su valor. Cada tipo de dato tiene un método Write* específico que debe usar.

  5. Para iniciar y finalizar matrices, utilice WriteStartArray() y WriteEndArray().

  6. Al final de cada documento y subdocumento, llame a WriteEndDocument().

El siguiente ejemplo de código muestra cómo escribir el documento BSON de muestra en myFile.bson:

string outputFileName = "myFile.bson";
using (var stream = File.OpenWrite(outputFileName))
using (var writer = new BsonBinaryWriter(stream))
{
writer.WriteStartDocument();
//address
writer.WriteName("address");
writer.WriteStartDocument();
writer.WriteName("street");
writer.WriteString("Pizza St");
writer.WriteName("zipcode");
writer.WriteString("10003");
writer.WriteEndDocument();
//coord
writer.WriteName("coord");
writer.WriteStartArray();
writer.WriteDouble(-73.982419);
writer.WriteDouble(41.579505);
writer.WriteEndArray();
//cuisine
writer.WriteName("cuisine");
writer.WriteString("Pizza");
//name
writer.WriteName("name");
writer.WriteString("Mongo's Pizza");
writer.WriteEndDocument();
}

El documento BSON resultante se parece al siguiente:

{
"address" : {
"street" : "Pizza St",
"zipcode" : "10003"
},
"coord" : [-73.982419, 41.579505]
"cuisine" : "Pizza",
"name" : "Mongo's Pizza"
}

Para leer un documento BSON desde un archivo, siga los mismos pasos utilizados para escribir un documento BSON en un archivo, con dos diferencias:

  • Utilice BsonBinaryReader en lugar de BsonBinaryWriter.

  • Utilice métodos Read* en lugar de métodos Write*. Estos métodos devuelven nombres de campo y valores del documento BSON.

El siguiente ejemplo de código muestra cómo leer los campos y valores del documento BSON de muestra almacenado en myFile.bson:

string inputFileName = "myFile.bson";
using (var stream = File.OpenRead(inputFileName))
using (var reader = new BsonBinaryReader(stream))
{
reader.ReadStartDocument();
//address
string addressFieldName = reader.ReadName();
reader.ReadStartDocument();
string streetFieldName = reader.ReadName();
string streetValue = reader.ReadString();
string zipFieldName = reader.ReadName();
string zipValue = reader.ReadString();
reader.ReadEndDocument();
//coord
string coordFieldName = reader.ReadName();
reader.ReadStartArray();
double coord1 = reader.ReadDouble();
double coord2 = reader.ReadDouble();
reader.ReadEndArray();
//cuisine
string cuisineFieldName = reader.ReadName();
string cuisineValue = reader.ReadString();
//name
string nameFieldName = reader.ReadName();
string nameValue = reader.ReadString();
reader.ReadEndDocument();
}

Advertencia

Si llama a ReadName() dos veces seguidas sin leer un valor, el controlador lanzará un InvalidOperationException.

Tip

Los constructores BsonBinaryReader y BsonBinaryWriter aceptan cualquier objeto System.IO.Stream. Esto significa que se puede leer o escribir en cualquier ubicación accesible mediante un flujo.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

LINQ

En esta página