Overview
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#.
Formato de datos BSON
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" }
Crear un documento BSON
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"} };
Cambiar un documento BSON
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:
Agrega un nuevo campo,
"restaurant_id", con el valor"12345"Elimina el campo
"cuisine"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.
Escribir BSON en un archivo
Puede escribir BSON en un archivo utilizando los métodos de la clase BsonBinaryWriter. Para escribir en un archivo, siga estos pasos:
Abra una secuencia de archivos para el archivo que contiene datos BSON.
Crea un
BsonBinaryWriterusando la secuencia de archivos.Para cada documento y subdocumento BSON que desee crear, llame a
WriteStartDocument().En cada documento y subdocumento BSON, llame a
WriteName()para establecer el nombre del campo y el métodoWrite*apropiado para establecer su valor. Cada tipo de dato tiene un métodoWrite*específico que debe usar.Para iniciar y finalizar matrices, utilice
WriteStartArray()yWriteEndArray().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" }
Leer BSON desde un archivo
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
BsonBinaryReaderen lugar deBsonBinaryWriter.Utilice métodos
Read*en lugar de métodosWrite*. 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.
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: