千家信息网

C# 操作MongoDB

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,1 安装MongoDB.Driver2 建立数据库连接#mongodb://127.0.0.1:27017 MongoClient client = new MongoClient("连接字符串");
千家信息网最后更新 2025年01月20日C# 操作MongoDB

1 安装MongoDB.Driver
2 建立数据库连接

#mongodb://127.0.0.1:27017 MongoClient client = new MongoClient("连接字符串");

3 获取数据库

 var database = client.GetDatabase("数据库");

4 获取数据集 Collection

#如果数据是预先定义好的可以在<输入数据的类型>  ,如果是没有定义好的,可以使用BsonDocument类型,BsonDocument表示没有预定于的模式。var collection = database.GetCollection("集合");

5 插入数据

#InsertOne(同步插入):collection.InsertOne(document);#InsertOneAsync(异步插入):await collection.InsertOneAsync(document);  #如果想要插入多个数据,可以使用 InsertMany 或 InsertManyAsync 方法。

6 查询数据

#查找集合中的第一条数据var document = collection.Find(new BsonDocument()).FirstOrDefault();orvar filter = Builders<'实体'>.Filter.Empty;var document = collection.Find<'实体'>(filter).FirstOrDefault();#查询数数据集中的所有数据var documents = collection.Find(new BsonDocument()).ToList();orvar filter = Builders<'实体'>.Filter.Empty;var document = collection.Find<'实体'>(filter).ToList();#用过滤器筛选获取单个文档var filterBuilder = Builders<实体>.Filter;

7 更新文档

#. Update.Set() 配合过滤器修改 var filter = Builders.Filter.Where(s => s.Name == "AESCR")                         & Builders.Filter.Where(d => d.BooksArray.Any(x=>x.XXBooks.Any(y=>y.bookname=="netcore"))); var update = Builders.Update.Set(d => d.BooksArray[0].XXBooks[0].bookname, "NetCore");            collection.UpdateOne(filter, update);

8 查询

 var result = collection.AsQueryable()                .Where(s => s.Name == "AESCR")                .SelectMany(s => s.BooksArray)                .Where(r => r.bookname == "C#");var page = await _sensorNodes.AsQueryable()    // 查找对应的sensorNode    .Where(s => s.Id == _sensorNodeId)    // 选择Records内嵌数组    .SelectMany(s => s.Records)    // 根据记录时间排序    .OrderBy(r => r.RecorDateTime)    // 跳过 index - 1页数据    .Skip((index - 1) * size)    // 选取一页数据    .Take(size)    // 转换为集合    .ToListAsync();

9 删除

# Update.PullFilter()方法 删除过滤器删除元素var update = Builders.Update.PullFilter(s => s.Records, r => r.Data == 339119843.0);await _sensorNodes.UpdateOneAsync(s => s.Id == _sensorNodeId, update);
0