Overview
En esta guía, puedes aprender a usar el driver .NET/C# para acceder y administrar bases de datos y colecciones de MongoDB.
MongoDB organiza los datos en una estructura jerárquica. Una implementación de MongoDB contiene una o más bases de datos, y cada base de datos contiene una o más colecciones. En cada colección, MongoDB almacena datos como documentos que contienen pares de campo y valor.
Para obtener más información sobre el formato de datos del documento, consulte Documentos en el manual del servidor.
Acceder a una base de datos
Puede acceder a una base de datos recuperando una instancia de IMongoDatabase desde su IMongoClient instancia. Puede utilizar la instancia IMongoDatabase devuelta para realizar operaciones a nivel de base de datos y acceder a las colecciones que contiene la base de datos.
Para crear un IMongoDatabase, llama al método GetDatabase() en una instancia de IMongoClient, pasando el nombre de la base de datos como parámetro. También puedes pasar un MongoDatabaseSettings opcional como parámetro para personalizar cómo accedes a una base de datos.
Si pasas el nombre de una base de datos inexistente al método GetDatabase(), el controlador seguirá devolviendo una instancia de IMongoDatabase. Cuando insertas cualquier dato en una colección de esta base de datos, el servidor crea la base de datos y la colección en ese momento.
El siguiente ejemplo crea un cliente y luego usa el método GetDatabase() para acceder a una base de datos llamada test_db:
var client = new MongoClient("<connection string>"); var myDB = mongoClient.GetDatabase("test_db");
Listar bases de datos
Para ver una lista de las bases de datos de tu implementación, llama al método síncrono ListDatabaseNames() o al método asíncrono ListDatabaseNamesAsync() en tu instancia IMongoClient.
Para ver información detallada sobre cada base de datos, llama al método sincrónico ListDatabases() o al método asincrónico ListDatabasesAsync() en tu instancia IMongoClient. Estos métodos devuelven campos que describen las bases de datos del clúster, como sus tamaños y si contienen datos.
El código siguiente muestra cómo utilizar el método síncrono ListDatabaseNames() o el método asíncrono ListDatabaseNamesAsync() para enumerar los nombres de las bases de datos de un clúster:
mongoClient.ListDatabaseNames();
await mongoClient.ListDatabaseNamesAsync();
Descartar una base de datos
Al eliminar una base de datos se borran permanentemente todos los datos de las colecciones de esa base de datos. Para descartar una base de datos, llama al método síncrono DropDatabase() o al método asíncrono DropDatabaseAsync() en tu instancia IMongoClient, pasando el nombre de la base de datos como parámetro.
El siguiente código muestra cómo usar el método síncrono DropDatabase() o el método asíncrono DropDatabaseAsync() para descartar una base de datos llamada test_db:
mongoClient.DropDatabase("test_db");
await mongoClient.DropDatabaseAsync("test_db");
Advertencia
Cuando eliminas una base de datos, se borran datos
Al eliminar una base de datos, se borran de forma permanente todos los documentos de las colecciones de la base de datos y todos los índices de esas colecciones. Después de descartar una base de datos, no puedes acceder ni restaurar ninguno de sus datos.
Acceder a una colección
Puedes acceder a una colección recuperando una instancia IMongoCollection de tu base de datos. Puedes usar una instancia IMongoCollection para realizar operaciones de datos, crear agregaciones y gestionar índices. Para recuperar un IMongoCollection, llama al método GetCollection() en una instancia IMongoDatabase. También puedes pasar un MongoCollectionSettings opcional como parámetro para personalizar cómo accedes a una colección.
Si pasas el nombre de una colección inexistente a este método, el controlador sigue devolviendo una instancia de IMongoCollection. Cuando insertas cualquier dato en esta colección, el servidor lo crea. Para aprender cómo crear explícitamente una colección, consulta la sección Crear una colección de esta guía.
Este ejemplo utiliza el método GetCollection() para acceder a una colección llamada coll_xyz desde una base de datos referenciada por la variable myDB:
var myColl = myDB.GetCollection<BsonDocument>("coll_xyz");
Parametrización de colecciones
Debes parametrizar tu instancia de IMongoCollection especificando en qué tipo de dato quieres serializar los datos de la colección. Cuando llamas a un método en una instancia IMongoCollection que está parametrizada con un tipo específico, el método acepta o devuelve instancias de este tipo.
El siguiente ejemplo muestra cómo parametrizar una colección con el tipo BsonDocument:
var collection = database.GetCollection<BsonDocument>("coll_xyz", settings);
Tip
Te recomendamos que parametrices tu instancia de IMongoCollection con un tipo personalizado que modele tus datos en vez del tipo BsonDocument. Puedes evitar la serialización y validación repetitivas si defines un tipo que modele tus datos específicos.
Para obtener más información sobre la serialización en el controlador .NET/C#, consulte la guía en Publicación por entregas.
Crear una colección
Puedes crear explícitamente una colección llamando al método síncrono CreateCollection() o al método asíncrono CreateCollectionAsync() en tu instancia IMongoDatabase.
Este método toma el nombre de la colección y un tipo opcional CreateCollectionOptions como parámetros. Luego, puedes acceder a la colección creada para realizar operaciones de datos, crear agregaciones y administrar índices.
El código siguiente muestra cómo usar el método síncrono CreateCollection() o el método asíncrono CreateCollectionAsync() para crear una colección llamada coll_abc dentro de una base de datos referenciada por la variable myDB:
myDB.CreateCollection("coll_abc");
await myDB.CreateCollectionAsync("coll_abc");
Listar colecciones
Para ver una lista de colecciones en una base de datos, llama al método síncrono ListCollectionNames() o al método asíncrono ListCollectionNamesAsync() en tu instancia IMongoDatabase.
Para ver información detallada sobre cada base de datos, llama al método sincrónico ListCollections() o al método asincrónico ListCollectionsAsync() en tu instancia IMongoDatabase. Estos métodos devuelven campos que describen las colecciones de la base de datos, como sus tipos y configuraciones.
El siguiente código te muestra cómo usar el método síncrono ListCollectionNames() o el método asíncrono ListCollectionNamesAsync() para listar los nombres de las colecciones de una base de datos:
myDB.ListCollectionNames();
await myDB.ListCollectionNamesAsync();
Descarta una colección
Al borrar una colección, se borran permanentemente todos los datos de esa colección. Para descartar una colección, llama a la función sincrónica DropCollection() o el método asincrónico DropCollectionAsync() en tu instancia IMongoCollection.
El siguiente código muestra cómo usar el método síncrono DropCollection() o el método asíncrono DropCollectionAsync() para descartar una base de datos llamada coll_abc:
myDB.DropCollection("coll_abc");
await myDB.DropCollectionAsync("coll_abc");
Advertencia
Al descartar una colección, se borran datos
Al borrar una colección de tu base de datos, se eliminan permanentemente todos los documentos dentro de esa colección y todos los índices de esa colección. Después de que descartes una colección, no puedes acceder ni hacer la restauración de ninguno de sus datos.
Información Adicional
Para más información sobre los conceptos de esta guía, consulta la siguiente documentación:
Guía para Insertar documentos
Bases de datos y colecciones en el manual del servidor
Documentos en el manual del servidor