MongoDB.Driver 用于 C# (.NET):完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

MongoDB.Driver 用于 C# (.NET):完整指南

\n\n

1. 这是什么以及为什么需要它

\n\n

MongoDB.Driver 是一个官方、高性能、异步的驱动程序,用于 .NET 平台(C#、F#、VB.NET)上的应用程序与 MongoDB 数据库进行交互。它提供了一套完整的工具,用于执行所有 CRUD 操作(创建、读取、更新、删除)、管理索引、数据聚合、处理事务以及实时变更处理(Change Streams)。该驱动程序由 MongoDB Inc. 公司开发和维护,保证了其与最新版本 MongoDB 的完全兼容性,并实现了数据库管理系统所有现代功能。

\n\n

为什么需要这个库?如果您正在开发 .NET 应用程序(ASP.NET Core 上的 Web 服务、WPF 桌面应用程序、控制台工具或微服务),并希望使用 MongoDB 作为主要或辅助数据存储,那么您需要一个驱动程序来建立连接并交换数据。MongoDB.Driver 抽象了 MongoDB 网络协议(Wire Protocol)的复杂性,为开发者提供了一个方便、强类型化的 API。您处理 C# 对象,而驱动程序会自动将它们序列化为 BSON(MongoDB 的二进制格式)并反序列化回来。这使您能够编写简洁、安全且高效的代码,而无需深入了解底层交互的细节。

\n\n

该库支持两种主要的工作范式:同步和异步(推荐)。异步方法(带有 Async 后缀)允许不阻塞执行线程,这对于可扩展的服务器应用程序至关重要。该驱动程序还包含一个 LINQ 提供程序,可以将 LINQ 查询转换为 MongoDB 聚合管道语法,使代码更加声明式,并且对 .NET 开发者来说更加熟悉。

\n\n

2. 安装

\n\n

安装通过 NuGet 包管理器进行。在包管理器控制台(Package Manager Console)或 .NET CLI 终端中执行以下任一命令。

\n\n

通过 .NET CLI(推荐):

\n
dotnet add package MongoDB.Driver
\n\n

通过包管理器控制台(Visual Studio):

\n
Install-Package MongoDB.Driver
\n\n

对于使用 Entity Framework Core 的项目(可选):

\n

有一个单独的提供程序 MongoDB.EntityFrameworkCore,但对于大多数任务,主驱动程序就足够了。

\n\n

安装后,项目文件(.csproj)中将添加一个引用:

\n
<PackageReference Include="MongoDB.Driver" Version="2.25.0" />
\n\n

3. 快速入门——最小工作示例

\n\n

以下代码连接到本地 MongoDB 实例,获取数据库 "testdb"、集合 "users",插入一个文档,并将其 ID 输出到控制台。

\n\n
using MongoDB.Bson;\nusing MongoDB.Driver;\n\n// 1. 创建客户端(连接到服务器)\nvar client = new MongoClient("mongodb://localhost:27017");\n\n// 2. 获取数据库(如果不存在则自动创建)\nvar database = client.GetDatabase("testdb");\n\n// 3. 获取集合(首次插入时自动创建)\nvar collection = database.GetCollection<BsonDocument>("users");\n\n// 4. 创建文档\nvar document = new BsonDocument\n{\n    { "name", "Alice" },\n    { "age", 30 },\n    { "city", "New York" }\n};\n\n// 5. 插入文档(异步)\nawait collection.InsertOneAsync(document);\n\n// 6. 输出生成的 ID\nConsole.WriteLine($"文档已插入,ID: {document["_id"]}");\n\n// 7. 读取集合中的所有文档\nvar allUsers = await collection.Find(new BsonDocument()).ToListAsync();\nforeach (var user in allUsers)\n{\n    Console.WriteLine(user.ToJson());\n}

推荐