C# MongoDB .NET Driver v1.6 增删改查入门教程

拾柒
拾柒
发布时间:2026-10-14| 6人浏览过
原创

本文基于MongoDB C#驱动 v1.6版本,演示了利用C#语言对MongoDB进行连接、插入、删除、更新和查询的基础操作流程。文章提供了完整的代码片段,涵盖从建立连接实例到执行具体CRUD动作的完整步骤,帮助开发者理解该版本驱动的传统API用法。

环境准备与连接配置

在使用C#操作MongoDB之前,需明确当前的开发环境。本例采用的是MongoDB官方的C#驱动程序,特定版本为v1.6.0。虽然目前新版驱动已广泛应用,但了解此版本的同步API对于维护旧项目或理解底层逻辑仍具参考价值。
在开始任何操作前,必须先定义并获取数据库连接实例。我们需要指定连接的URI、目标数据库名称以及目标集合(Collection,相当于关系型数据库中的表)名称。

第1步:建立数据库连接

目的:初始化MongoDB服务器会话,并获取对特定数据库和集合的操作句柄。

关键配置:

  • conn: 连接字符串,格式为 mongodb://127.0.0.1:27017。
  • dbName: 目标数据库名称,例如 "mongodb_name"。
  • tbName: 目标集合名称,例如 "table_text"。

操作步骤:

  1. 通过 MongoServer.Create(conn) 创建服务器实例。
  2. 调用 server.GetDatabase(dbName) 获取数据库对象 MongoDatabase。
  3. 调用 db.GetCollection(tbName) 获取集合对象 MongoCollection,后续所有针对该表的操作均通过此对象进行。
/// <summary>
/// 数据库连接配置示例
/// </summary>
private const string conn = "mongodb://127.0.0.1:27017";
private const string dbName = "mongodb_name";
private const string tbName = "table_text";

// 创建数据连接
MongoServer server = MongoServer.Create(conn);
// 获取指定数据库
MongoDatabase db = server.GetDatabase(dbName);
// 获取表 (Collection)
MongoCollection col = db.GetCollection(tbName);

数据结构定义

MongoDB是文档型数据库,没有严格的“表”结构限制,因此在进行增删改查前,需要定义与之匹配的C#实体类。假设我们要管理用户信息,可以创建一个简单的 User 类作为数据模型。

基本操作:增、删、改

第2步:插入数据 (Insert)

目的:将新建的实体对象存入MongoDB集合中。

入口:已建立的 col 集合对象。

动作:

  1. 实例化一个待插入的数据对象,例如 new User() { ... }。
  2. 调用 col.Insert(t) 方法,将对象转换为BSON格式并写入数据库。
public static void Add(User t)
{
    // 1. 创建连接与获取集合(实际项目中建议复用MongoServer实例以提高性能)
    MongoServer server = MongoServer.Create(conn);
    MongoDatabase db = server.GetDatabase(dbName);
    MongoCollection<User> col = db.GetCollection<User>(tbName);

    // 2. 插入数据
    col.Insert(t);
}

第3步:删除数据 (Remove)

目的:根据唯一标识符(ObjectId)删除指定记录。

重要参数:对象的 _id 字段(ObjectID),这是MongoDB记录的默认主键。

动作:

  1. 构建查询条件:使用 Query.EQ("_id", new ObjectId(objId)) 构造匹配条件。
  2. 执行删除:调用 col.Remove(query)。
public static void Delete(string objId)
{
    MongoServer server = MongoServer.Create(conn);
    MongoDatabase db = server.GetDatabase(dbName);
    // 注意:删除时使用泛型集合可更方便地处理类型转换
    MongoCollection<User> col = db.GetCollection<User>(tbName);

    // 构建以 _id 为条件的查询
    IMongoQuery query = Query.EQ("_id", new ObjectId(objId));

    // 执行删除
    col.Remove(query);
}

第4步:修改数据 (Update)

目的:根据现有对象的主键更新其属性值。

动作:

  1. 将待更新的C#对象转换为 BsonDocument,这代表了MongoDB中的文档结构。
  2. 构建基于 _id 的更新查询条件。
  3. 使用 col.Update(query, updateDocument) 执行替换式更新。
public static void Update(User t)
{
    MongoServer server = MongoServer.Create(conn);
    MongoDatabase db = server.GetDatabase(dbName);
    MongoCollection<User> col = db.GetCollection<User>(tbName);

    // 将对象转换为 BSON 文档
    BsonDocument bd = BsonExtensionMethods.ToBsonDocument(t);

    // 构建查询条件
    IMongoQuery query = Query.EQ("_id", t.Id);

    // 执行更新:使用 UpdateDocument 包装修改内容
    col.Update(query, new UpdateDocument(bd));
}

数据查询操作

第5步:单条条件查询 (FindOne)

目的:检索符合特定条件(如唯一ID)的单条记录。

返回结果:对应类型的实体对象,若未找到则返回 null。

public static TuCao SelectOne(string objId) 
{
    MongoServer server = MongoServer.Create(conn);
    MongoDatabase db = server.GetDatabase(dbName);
    MongoCollection<User> col = db.GetCollection<User>(tbName);

    // 查找单条记录
    // 注意:此处返回类型示例使用了 TuCao,实际操作应确保与集合类型一致
    return col.FindOne(Query.EQ("_id", new ObjectId(objId)));
}

第6步:全量查询 (FindAll)

目的:获取集合中的所有记录。

注意事项:在生产环境中,直接执行 FindAll 可能会因为数据量过大导致内存溢出或性能问题,建议使用分页或限制返回数量的操作。本例展示基础的遍历方式。

动作:

  1. 调用 col.FindAll() 获取结果枚举集。
  2. 通过 foreach 循环遍历结果集,提取 ID、文本内容和时间戳等字段。
public static void SelectAll()
{
    List<User> list = new List<User>();

    MongoServer server = MongoServer.Create(conn);
    MongoDatabase db = server.GetDatabase(dbName);
    MongoCollection<User> col = db.GetCollection<User>(tbName);

    // 查询全部记录
    // 方式1:添加至列表
    list.AddRange(col.FindAll());

    // 方式2:直接遍历处理
    foreach (TuCao t in col.FindAll())
    {
        string id = t.Id.ToString();
        string text = t.Text;
        DateTime dt = t.Createdate;
        // 处理业务逻辑...
    }
}

总结

上述内容展示了使用早期版本 MongoDB C# 驱动进行核心 CRUD 操作的典型流程。关键在于理解 MongoServer、MongoDatabase 和 MongoCollection 层级关系,以及如何使用 Query 对象构建过滤条件。以上就是C#对MongoDB进行增删改查简单操作实例的详细内容,更多关于C#数据库编程与NoSQL技术的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。