文档菜单
文档首页
/ / /
C#/.NET
/

数据库与集合

本页内容

  • 概述
  • 访问数据库
  • 列出数据库
  • 删除数据库
  • 访问集合
  • 集合参数化
  • 创建集合
  • 列出集合
  • 下载数据集
  • 附加信息

在本指南中,您可以了解如何使用 .NET/C# 驱动程序来访问和管理 MongoDB 数据库和集合。

MongoDB 以层次结构组织数据。一个 MongoDB 部署包含一个或多个 数据库,每个数据库包含一个或多个 集合。在集合中,MongoDB 以包含字段-值对的 文档 形式存储数据。

有关文档数据格式的更多信息,请参阅服务器手册中的文档

您可以通过从您的IMongoClient 实例检索一个 IMongoDatabase 实例来访问数据库。您可以使用返回的 IMongoDatabase 实例执行数据库级操作并访问数据库中包含的集合。

要创建一个 IMongoDatabase,请在一个 GetDatabase() 方法上调用 IMongoClient 实例上,并传递数据库名称作为参数。您还可以传递一个可选的 MongoDatabaseSettings 参数来自定义如何访问数据库。

如果您将一个不存在的数据库名称传递给 GetDatabase() 方法,驱动程序仍然会返回一个 IMongoDatabase 实例。当您将任何数据插入到此数据库中的集合时,服务器将在该时刻创建数据库和集合。

以下示例创建了一个客户端,然后使用 GetDatabase() 方法访问名为 test_db 的数据库。

var client = new MongoClient("<connection string>");
var myDB = mongoClient.GetDatabase("test_db");

要查看部署的数据库列表,请调用异步的 ListDatabaseNamesAsync() 方法或同步的 ListDatabaseNames() 方法,在您的 IMongoClient 实例上。

要查看每个数据库的详细信息,请调用异步的 ListDatabasesAsync() 方法或同步的 ListDatabases() 方法在你的 IMongoClient 实例上。这些方法返回描述集群中数据库的字段,例如它们的尺寸以及它们是否包含数据。

以下代码演示了如何使用异步的 ListDatabaseNamesAsync() 方法或同步的 ListDatabaseNames() 方法来列出集群中数据库的名称

await mongoClient.ListDatabaseNamesAsync();
mongoClient.ListDatabaseNames();

永久删除数据库会从该数据库的集合中删除所有数据。要删除数据库,请在您的 IMongoClient 实例上调用异步的 DropDatabaseAsync() 方法或同步的 DropDatabase() 方法,将数据库名称作为参数传入。

以下代码展示了如何使用异步的 DropDatabaseAsync() 方法或同步的 DropDatabase() 方法来删除名为 test_db 的数据库。

await mongoClient.DropDatabaseAsync("test_db");
mongoClient.DropDatabase("test_db");

警告

删除数据库会删除数据

删除数据库会永久删除数据库集合中的所有文档以及这些集合上的所有索引。删除数据库后,您无法访问或恢复任何数据。

您可以通过从数据库中检索一个IMongoCollection实例来访问一个集合。您可以使用IMongoCollection实例执行数据操作、创建聚合和管理索引。要检索IMongoCollection,请在IMongoDatabase实例上调用GetCollection()方法。您还可以将可选的MongoCollectionSettings作为参数来自定义如何访问集合。

如果您向此方法传递一个不存在的集合名称,驱动程序仍然返回一个IMongoCollection实例。当您向该集合插入任何数据时,服务器会创建它。有关如何显式创建集合的信息,请参阅本指南的创建集合部分。

此示例使用GetCollection()方法从由myDB变量引用的数据库中访问名为coll_xyz的集合。

var myColl = myDB.GetCollection<BsonDocument>("coll_xyz");

您必须通过指定要将集合数据序列化为何种数据类型来参数化您的 IMongoCollection 实例。当您对参数化特定类型的 IMongoCollection 实例调用方法时,该方法接受或返回此类型的实例。

以下示例展示了如何使用 BsonDocument 类型参数化一个集合

var collection = database.GetCollection<BsonDocument>("coll_xyz", settings);

提示

我们建议您使用自定义类型来参数化您的 IMongoCollection 实例,该类型模拟您的数据,而不是使用 BsonDocument 类型。通过定义一个模拟您特定数据的类型,您可以避免重复的序列化和验证。

要了解更多关于 .NET/C# 驱动器中的序列化信息,请参阅序列化.

您可以通过调用异步方法 CreateCollectionAsync() 或同步方法 CreateCollection() 在您的 IMongoDatabase 实例上创建一个集合。

此方法接受集合名称和可选的 CreateCollectionOptions 类型作为参数。然后您可以使用创建的集合来执行数据操作、创建聚合和管理索引。

以下代码演示了如何使用异步方法 CreateCollectionAsync() 或同步方法 CreateCollection() 在由变量 myDB 引用的数据库中创建名为 coll_abc 的集合。

await myDB.CreateCollectionAsync("coll_abc");
myDB.CreateCollection("coll_abc");

要查看数据库中集合的列表,请在您的 IMongoDatabase 实例上调用异步的 ListCollectionNamesAsync() 方法或同步的 ListCollectionNames() 方法。

要查看每个数据库的详细信息,请调用异步的ListCollectionsAsync()方法或同步的ListCollections()方法,在您的IMongoDatabase实例上。这些方法返回描述数据库中集合的字段,例如它们的类型和设置。

以下代码演示了如何使用异步的ListCollectionNamesAsync()方法或同步的ListCollectionNames()方法来列出数据库中集合的名称

await myDB.ListCollectionNamesAsync();
myDB.ListCollectionNames();

永久删除一个集合将永久删除该集合中的所有数据。要删除一个集合,请调用异步的 DropCollectionAsync() 方法或同步的 DropCollection() 方法,在你的 IMongoCollection 实例上。

以下代码展示了如何使用异步的 DropCollectionAsync() 方法或同步的 DropCollection() 方法来删除名为 coll_abc 的数据库。

await myDB.DropCollectionAsync("coll_abc");
myDB.DropCollection("coll_abc");

警告

删除集合删除数据

从您的数据库中删除集合将永久删除该集合中的所有文档以及该集合上的所有索引。删除集合后,您将无法访问或恢复其数据。

有关本指南中的概念更多信息,请参阅以下文档

  • 插入文档指南

  • 数据库和集合(服务器手册

  • 文档(服务器手册

返回

网络压缩