C# MongoDB .NET Driver v1.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"。
操作步骤:
- 通过
MongoServer.Create(conn)创建服务器实例。 - 调用
server.GetDatabase(dbName)获取数据库对象MongoDatabase。 - 调用
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 集合对象。
动作:
- 实例化一个待插入的数据对象,例如
new User() { ... }。 - 调用
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记录的默认主键。
动作:
- 构建查询条件:使用
Query.EQ("_id", new ObjectId(objId))构造匹配条件。 - 执行删除:调用
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)
目的:根据现有对象的主键更新其属性值。
动作:
- 将待更新的C#对象转换为
BsonDocument,这代表了MongoDB中的文档结构。 - 构建基于
_id的更新查询条件。 - 使用
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 可能会因为数据量过大导致内存溢出或性能问题,建议使用分页或限制返回数量的操作。本例展示基础的遍历方式。
动作:
- 调用
col.FindAll()获取结果枚举集。 - 通过
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技术的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









