C# 操作 MongoDB的示例demo
阿新 • • 發佈:2020-12-07
今專案使用Mongodb,C#操作MongoDB使用MongoDB.Driver.dll庫(Nuget),寫了個小Demo,如下:
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using MongoDB.Driver; namespace MongoBase { internal class MongoBase { private static string _connStr = "mongodb://root:[email protected]:27017"; private static string _dbName = "test"; private static MongoUrl url = new MongoUrl(_connStr); private static MongoClient client = new MongoClient(url); public static IMongoDatabase db = client.GetDatabase(_dbName); } public class MongoHelper<TEntity> { public string Name => typeof(TEntity).Name; public IMongoCollection<TEntity> Collection => MongoBase.db.GetCollection<TEntity>(Name); public List<TEntity> Queryable => Collection.AsQueryable().ToList(); public FilterDefinitionBuilder<TEntity> Filter => Builders<TEntity>.Filter; public UpdateDefinitionBuilder<TEntity> Update => Builders<TEntity>.Update; public ProjectionDefinitionBuilder<TEntity>Projection=> Builders<TEntity>.Projection; } }
using System; using System.Collections.Generic; using System.Text; using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; namespace MongoBase { public class EntityBase { public EntityBase() { _id = ObjectId.GenerateNewId(); createTime = DateTime.Now; isDelete = false; id = _id.ToString(); } [BsonId] public ObjectId _id { get; set; } public string id { get; set; } public DateTime? createTime { get; set; } public bool? isDelete { get; set; } } }
using MongoBase; using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; namespace ConsoleApp5 { internal class Video : EntityBase { public string Title { get; set; } public string Category { get; set; } public int Minutes { get; set; } public string Comments { get; set; } } }
using System; using System.Collections.Generic; using MongoBase; using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.Linq; namespace ConsoleApp5 { class Program { static void Main(string[] args) { MongoHelper<Video> videoHelper = new MongoHelper<Video>(); //新增 videoHelper.Collection.InsertOne(new Video() { Title = "ggg" }); //查詢集合 var list = videoHelper.Collection.Find(videoHelper.Filter.Eq(e => e.Category,"Horror")).ToList(); list = videoHelper.Collection.Find(videoHelper.Filter.Eq(e => e.Title,"ggg")).ToList(); //方式一:拼接查詢條件 List<FilterDefinition<Video>> listFilter = new List<FilterDefinition<Video>>() { videoHelper.Filter.Eq(e=>e.Minutes,118),videoHelper.Filter.Eq(e=>e.Title,"The Perfect Developer") }; //根據查詢多個條件篩選集合 list = videoHelper.Collection.Find(videoHelper.Filter.And(listFilter)).ToList(); //方式二:拼接查詢條件 var filter = videoHelper.Filter.Eq(e => e.Title,"cys") & videoHelper.Filter.Eq(e => e.Category,"cys"); list = videoHelper.Collection.Find(filter).ToList(); //拼接更新欄位 var updateDefinition = new List<UpdateDefinition<Video>>() { videoHelper.Update.Set(e=>e.Title,"cys"),videoHelper.Update.Set(e=>e.Category,"cys") }; //按照條件更新 videoHelper.Collection.UpdateMany(videoHelper.Filter.And(listFilter),videoHelper.Update.Combine(updateDefinition)); //刪除 videoHelper.Collection.DeleteOne(videoHelper.Filter.Eq(e => e.Title,"Lost In Frankfurt am Main")); //獲取某個欄位 filter = videoHelper.Filter.Eq(e => e.Title,"ggg"); var bson = videoHelper.Collection.Find(filter).Project(videoHelper.Projection.Include(e => e.Title).Exclude(e => e._id)).FirstOrDefault(); } } }
注:時間型別的屬性,存入MongoDB後會比北京時間少8小時,是由於預設寫入的是世界標準時間,可在時間型別屬性上新增
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime createTime { get; set; }
的特性,這樣取出來之後就是北京時間。
以上就是C# 操作 MongoDB的示例demo的詳細內容,更多關於C# 操作 MongoDB的資料請關注我們其它相關文章!