Databases and Collections
On this page
Overview
In this guide, you can learn how to use the .NET/C# Driver to access and manage MongoDB databases and collections.
MongoDB organizes data in a hierarchical structure. A MongoDB deployment contains one or more databases, and each database contains one or more collections. In each collection, MongoDB stores data as documents that contain field-and-value pairs.
To learn more about the document data format, see Documents in the Server manual.
Access a Database
You can access a database by retrieving an IMongoDatabase
instance from your IMongoClient
instance. You can use
the returned IMongoDatabase
instance to perform database-level operations and access
collections that the database contains.
To create an IMongoDatabase
, call the GetDatabase()
method on an IMongoClient
instance, passing the database name as a
parameter. You can also pass an optional MongoDatabaseSettings
as a parameter to customize how you access a database.
If you pass the name of a nonexistent database to the GetDatabase()
method, the driver still returns an
IMongoDatabase
instance. When you insert any data into a collection in this
database, the server creates the database and collection at that time.
The following example creates a client, then uses the GetDatabase()
method to access a database called test_db
:
var client = new MongoClient("<connection string>"); var myDB = mongoClient.GetDatabase("test_db");
List Databases
To see a list of your deployment's databases, call the synchronous ListDatabaseNames()
method or asynchronous ListDatabaseNamesAsync()
method on your IMongoClient
instance.
To see detailed information about each database, call the synchronous ListDatabases() method or
asynchronous ListDatabasesAsync()
method on your IMongoClient
instance. These methods return fields describing
the databases in the cluster, such as their sizes and whether they contain data.
The following code shows how to use the synchronous ListDatabaseNames()
method or the
asynchronous ListDatabaseNamesAsync()
method to list the names of the databases in a
cluster:
mongoClient.ListDatabaseNames();
await mongoClient.ListDatabaseNamesAsync();
Drop a Database
Dropping a database permanently deletes all the data in that database's
collections. To drop a database, call the synchronous DropDatabase()
method or asynchronous DropDatabaseAsync()
method on your IMongoClient
instance, passing the database name as
the parameter.
The following code shows how to use the synchronous DropDatabase()
method or the asynchronous
DropDatabaseAsync()
method to drop a database called test_db
:
mongoClient.DropDatabase("test_db");
await mongoClient.DropDatabaseAsync("test_db");
Warning
Dropping a Database Deletes Data
Dropping a database permanently deletes all documents in the database's collections and all indexes on those collections. After you drop a database, you cannot access or restore any of its data.
Access a Collection
You can access a collection by retrieving an IMongoCollection
instance from your database. You can use an IMongoCollection
instance to perform data operations,
create aggregations, and manage indexes. To retrieve an
IMongoCollection
, call the GetCollection()
method on an IMongoDatabase
instance. You can also pass an optional MongoCollectionSettings
as a parameter to customize how you access a collection.
If you pass the name of a nonexistent collection to this method, the
driver still returns an IMongoCollection
instance. When you insert
any data into this collection, the server creates it. To learn how to
explicitly create a collection, see the Create a Collection section of this guide.
This example uses the GetCollection()
method to
access a collection called coll_xyz
from a database referenced by
the myDB
variable:
var myColl = myDB.GetCollection<BsonDocument>("coll_xyz");
Collection Parameterization
You must parameterize your IMongoCollection
instance by specifying what
data type you want to serialize the collection's
data into. When you call a method on a IMongoCollection
instance that is
parameterized with a specific type, the method accepts or returns
instances of this type.
The following example shows how to parameterize a
collection with the BsonDocument
type:
var collection = database.GetCollection<BsonDocument>("coll_xyz", settings);
Tip
We recommend that you parameterize your IMongoCollection
instance with a
custom type that models your data instead of the BsonDocument
type.
You can avoid repetitive serialization and validation by defining a
type that models your specific data.
To learn more about serialization in the .NET/C# Driver, see the guide on Serialization.
Create a Collection
You can explicitly create a collection by calling the synchronous CreateCollection()
method or asynchronous CreateCollectionAsync()
method on your IMongoDatabase
instance.
This method takes the collection name and an optional CreateCollectionOptions type as parameters. You can then access the created collection to perform data operations, create aggregations, and manage indexes.
The following code shows how to use the synchronous
CreateCollection()
method or the asynchronous
CreateCollectionAsync()
method to create a collection called
coll_abc
within a database referenced by the myDB
variable:
myDB.CreateCollection("coll_abc");
await myDB.CreateCollectionAsync("coll_abc");
List Collections
To see a list of collections in a database, call the synchronous ListCollectionNames()
method or asynchronous ListCollectionNamesAsync()
method on your IMongoDatabase
instance.
To see detailed information about each database, call the synchronous ListCollections()
method or asynchronous ListCollectionsAsync()
method on your IMongoDatabase
instance. These methods return fields describing
the collections in the database, such as their types and settings.
The following code shows how to use the synchronous ListCollectionNames()
method or
the asynchronous ListCollectionNamesAsync()
method to list the names of the
collections in a database:
myDB.ListCollectionNames();
await myDB.ListCollectionNamesAsync();
Drop a Collection
Dropping a collection permanently deletes all the data in that collection. To drop a
collection, call the synchronous DropCollection() or
the asynchronous DropCollectionAsync()
method on your IMongoCollection
instance.
The following code shows how to use the synchronous DropCollection()
method or the asynchronous
DropCollectionAsync()
method to drop a database called coll_abc
:
myDB.DropCollection("coll_abc");
await myDB.DropCollectionAsync("coll_abc");
Warning
Dropping a Collection Deletes Data
Dropping a collection from your database permanently deletes all documents within that collection and all indexes on that collection. After you drop a collection, you cannot access or restore any of its data.
Additional Information
For more information about the concepts in this guide, see the following documentation:
Insert Documents guide
Databases and Collections in the Server manual
Documents in the Server manual