You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite中的操作,如何在MongoDB C#中实现等效功能?

SQLite常见操作的MongoDB C#等效实现

嘿,我明白你需要把SQLite里的操作转到MongoDB C#驱动上来,下面我会把最常用的CRUD(创建、读取、更新、删除)操作一一对应起来,用实际的代码示例帮你快速上手。

1. 准备工作

首先得确保你安装了MongoDB的C#驱动,用NuGet或者.NET CLI都可以:

# NuGet命令
Install-Package MongoDB.Driver

# .NET CLI命令
dotnet add package MongoDB.Driver

然后是建立连接、获取集合的基础代码(假设我们操作的是Users集合,对应SQLite的Users表):

using MongoDB.Driver;

// 连接本地MongoDB实例,实际生产环境请替换为你的连接字符串
var client = new MongoClient("mongodb://localhost:27017");
// 获取目标数据库
var database = client.GetDatabase("YourDatabaseName");
// 获取对应集合
var userCollection = database.GetCollection<User>("Users");

// 定义实体类,对应SQLite表的结构
public class User
{
    public Guid Id { get; set; } // 这里用Guid做主键,也可以用MongoDB默认的ObjectId
    public string Name { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
}

2. 核心操作对应示例

插入数据(对应SQLite INSERT)

SQLite语句:

INSERT INTO Users (Name, Age, Email) VALUES ('John Doe', 30, 'john@example.com');

MongoDB C#等效实现:

var newUser = new User
{
    Id = Guid.NewGuid(),
    Name = "John Doe",
    Age = 30,
    Email = "john@example.com"
};

// 插入单条数据
await userCollection.InsertOneAsync(newUser);

// 如果要批量插入
var batchUsers = new List<User> { newUser, new User { Name = "Jane Smith", Age = 28 } };
await userCollection.InsertManyAsync(batchUsers);

查询数据(对应SQLite SELECT)

查询所有记录

SQLite:

SELECT * FROM Users;

MongoDB C#:

var allUsers = await userCollection.Find(_ => true).ToListAsync();

条件筛选(按年龄大于25查询)

SQLite:

SELECT * FROM Users WHERE Age > 25;

MongoDB C#:

// 简洁写法
var adultUsers = await userCollection.Find(u => u.Age > 25).ToListAsync();

// 复杂条件推荐用FilterDefinition构建
var ageFilter = Builders<User>.Filter.Gt(u => u.Age, 25);
var adultUsers = await userCollection.Find(ageFilter).ToListAsync();

查询单条匹配记录(按邮箱查找)

SQLite:

SELECT * FROM Users WHERE Email = 'john@example.com' LIMIT 1;

MongoDB C#:

var targetUser = await userCollection.Find(u => u.Email == "john@example.com").FirstOrDefaultAsync();

更新数据(对应SQLite UPDATE)

更新单条记录

SQLite:

UPDATE Users SET Age = 31 WHERE Email = 'john@example.com';

MongoDB C#:

var filter = Builders<User>.Filter.Eq(u => u.Email, "john@example.com");
var update = Builders<User>.Update.Set(u => u.Age, 31);

var updateResult = await userCollection.UpdateOneAsync(filter, update);
// 可以查看实际更新的记录数
Console.WriteLine($"成功更新 {updateResult.ModifiedCount} 条记录");

批量更新(给所有小于30岁的用户年龄+1)

SQLite:

UPDATE Users SET Age = Age + 1 WHERE Age < 30;

MongoDB C#:

var filter = Builders<User>.Filter.Lt(u => u.Age, 30);
var update = Builders<User>.Update.Inc(u => u.Age, 1);

var updateResult = await userCollection.UpdateManyAsync(filter, update);

删除数据(对应SQLite DELETE)

删除单条记录

SQLite:

DELETE FROM Users WHERE Email = 'john@example.com';

MongoDB C#:

var filter = Builders<User>.Filter.Eq(u => u.Email, "john@example.com");
var deleteResult = await userCollection.DeleteOneAsync(filter);

批量删除(删除所有小于18岁的用户)

SQLite:

DELETE FROM Users WHERE Age < 18;

MongoDB C#:

var filter = Builders<User>.Filter.Lt(u => u.Age, 18);
var deleteResult = await userCollection.DeleteManyAsync(filter);

3. 额外注意事项

  • MongoDB是文档型数据库,没有SQLite那样严格的表结构约束,实体类字段可以灵活增减,无需提前修改“表结构”。
  • MongoDB默认主键是_id字段,如果你用实体类的Id属性,驱动会自动映射到_id,支持Guid、ObjectId等多种类型。
  • 如果需要对应SQLite的JOIN操作,MongoDB可以用**聚合管道(Aggregation Pipeline)**实现,通过Aggregate()方法构建复杂查询逻辑。

内容的提问来源于stack exchange,提问作者TheRealSpacebar Button

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:13:19