免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

兩種 .Net Core 3.0 對(duì) MongoDB 的多條件查詢操作

前言??在日常開發(fā)中,偶爾會(huì)用到 MongoDB 的數(shù)據(jù)操作,也花費(fèi)了一些時(shí)間調(diào)試,因此在此處記錄一下,共同進(jìn)步 。
廢話少說,出招吧!
正文2.1 準(zhǔn)備工作首先需要引入 .Net 平臺(tái)鏈接 MongoDB 的動(dòng)態(tài)庫(kù):MongoDB.Driver;
然后創(chuàng)建默認(rèn) DBContext 實(shí)體類:
(將數(shù)據(jù)庫(kù)以及表的信息引入到系統(tǒng)中備用,數(shù)據(jù)庫(kù)鏈接信息最好是放置在配置文件中,便于不同環(huán)境靈活配置,次非本文重點(diǎn)就直接默認(rèn)了)
using MongoDB.Bson;using MongoDB.Driver;namespace DBContext.DataBase{public class MongoDBContextDefault{//連接地址private static string conn = "mongodb://0.0.0.0:0000";//連接服務(wù)端static MongoClient client_pub = new MongoClient(conn);//數(shù)據(jù)庫(kù)名稱private static string dbName = "MongDBName";//集合名稱private static string collName_Table1 = "Table1";private static string collName_Table2 = "Table2";//獲取指定數(shù)據(jù)庫(kù)static IMongoDatabase db_Test = client_pub.GetDatabase(dbName);//獲取指定集合BsonDocument數(shù)據(jù)庫(kù)文檔對(duì)象public static IMongoCollection<BsonDocument> colle_Table1 = db_Test.GetCollection<BsonDocument>(collName_Table1);// BsonDocument:最終會(huì)以 Json 對(duì)象來取值public static IMongoCollection<Table2Model> colle_Table2Model = db_Test.GetCollection<Table2Model>(collName_Table2);// Table2Model:與表字段完全一致的對(duì)象,取值方便}}2.2 數(shù)據(jù)訪問--獲取 Json 對(duì)象直接上代碼,看注釋即可:
(傳入的查詢條件,需要和數(shù)據(jù)庫(kù)中的類型匹配)(若通過 ID 查詢,需要將條件值轉(zhuǎn)為 Guid 類型)
using DBContext.DataBase;using MongoDB.Bson;using MongoDB.Bson.IO;using MongoDB.Bson.Serialization;using MongoDB.Driver;using Newtonsoft.Json.Linq;public List<JObject> GetValues(string name, string id){FilterDefinitionBuilder<BsonDocument> builderFilter = Builders<BsonDocument>.Filter;DateTime startTime = DateTime.Now.AddDays(-7);//只同步最近七天有更新的流程FilterDefinition<BsonDocument> filter = builderFilter.And(builderFilter.Eq("name", name), // 多條件查詢builderFilter.Eq("id", new Guid(id)), // id 需要轉(zhuǎn)換成 Guid 類型builderFilter.Gte("stime", startTime)); // Time 需要是 DateTime 類型var result = MongoDBContextDefault.colle_ProcInstData.Find<BsonDocument>(filter).ToList(); // 獲取數(shù)據(jù)List<JObject> jTokens = new List<JObject>();var setjson = new JsonWriterSettings{OutputMode = JsonOutputMode.Strict};foreach (var item in result) // 逐個(gè)轉(zhuǎn)為 JObject,備用(后續(xù)循環(huán),可以直接通過 JObjectItem["name"] 進(jìn)行取值){JObject item_jo = JObject.Parse(item.ToJson(setjson));jTokens.Add(item_jo);}return jTokens;}2.3 數(shù)據(jù)訪問--獲取指定對(duì)象類型此方案中的查詢字符串和上一章節(jié)是有區(qū)別的,具體如下:
(查詢條件先拼接成 json 字符串,再轉(zhuǎn) BsonDocument 對(duì)象)
public void Method(string name,string id){DateTime dtcondition = DateTime.Now.AddDays(-7);// 時(shí)間上差一個(gè)月,所以月份 -1 // 具體原因未知 。。。待后續(xù)補(bǔ)充string strdate = $"new Date({dtcondition.Year},{dtcondition.Month - 1},{dtcondition.Day})";string querystr = $"{{$and:[{{'name':'{name}'}}" +$",{{'id':CSUUID('{id}')}}" + // 另一種根據(jù) ID 查詢方式$",{{'time':{{$gte:{strdate}}}}}]}}";var querycon = BsonSerializer.Deserialize<BsonDocument>(querystr);var dataresult = MongoDBContextDefault.colle_Table2.Find(querycon).ToList();// 這里的 dataresult 結(jié)果類型是 List<Table2Model>,可以直接跟屬性取值,更方便}注:暫列這兩種查詢吧,后續(xù)繼續(xù)補(bǔ)充,有問題歡迎指正 。
【兩種 .Net Core 3.0 對(duì) MongoDB 的多條件查詢操作】

    經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀