.Net Core如何對MongoDB執行多條件查詢_實用技巧

來源:腳本之家  責任編輯:小易  

命令:dotnet-version出來版本號就說名成功了,不成功這個命令是無法使用的。還可以根據官網的事例寫一個Hello World控制臺程序,然后運行成功并出現Hello World,也說明安裝成功了www.anxorj.tw防采集請勿采集本網。

以前項目基本上全部使用MySQL數據庫, 最近項目排期空出了一點時間leader決定把日志模塊遷移到插入/查詢性能更好的MongoDB上. 多條件查詢的寫法著實費了些功夫, 撰文記錄一下.

這種錯誤一般有兩種情況 方法拼寫出錯 未引用DLL和Using命令空間 你自行檢查就好了

一、準備工作

Net Core不是特別好理解,也許最好考慮對.Net進行徹底重構以支持跨平臺開發,.Net Core已經迅速成為.Net會開源工作的核心。Net Core可以比其他.Net運行時和庫更快地響應對新平臺的需求。例如,三星正在將

1. 安裝過程, 不贅述了

.net Framework 是基礎類庫,是程序運行的底層框架 ASP.Net 是。net里用來做網站的技術集合 IIS 是架設Web服務器用來提供網頁瀏覽服務的,屬于系統環境。一般用Asp。net開發軟件,然后靠iis對公網

2. 添加ReferencePackage

在命令行(cmd)中輸入 dotnet-version 或 dotnet-info 如果能正確顯示信息就表示安裝成功

dotnet add package mongodb.bsondotnet add package mongodb.driver

3. appsetting.json添加連接配置

"MongodbHost": { "Connection": "mongodb://[username]:[password]@[ip]:[port]", "DataBase": "[database]", "Table": "" },

4. 獲取MongoDBConfig 的方法

public static MongodbHostOptions MongodbConfig(){ var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json");  IConfiguration Configuration = builder.Build();  var option = Configuration.GetSection("MongodbHost");  return new MongodbHostOptions { Connection = option["Connection"], DataBase = option["DataBase"], Table = option["Table"] };}

二、查詢方法

這里的查詢方法是網上找的, 直接拿來用了. 如果是單一數據源的話, 這里的host可以提取出來成為helper類的屬性.

#region FindListByPage 分頁查詢集合 /// <summary> /// 分頁查詢集合 /// </summary> /// <param name="filter">查詢條件</param> /// <param name="pageIndex">當前頁</param> /// <param name="pageSize">頁容量</param> /// <param name="count">總條數</param> /// <param name="field">要查詢的字段,不寫時查詢全部</param> /// <param name="sort">要排序的字段</param> /// <returns></returns> public static List<T> FindListByPage(FilterDefinition<T> filter, int pageIndex, int pageSize, out int count, string[] field = null, SortDefinition<T> sort = null) { try { MongodbHostOptions host = Tools.AppSettingsTools.MongodbConfig(); host.Table = "WSMessageLog"; var client = MongodbClient<T>.MongodbInfoClient(host); count = Convert.ToInt32(client.CountDocuments(filter)); //不指定查詢字段 if (field == null || field.Length == 0) { if (sort == null) return client.Find(filter).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList(); //進行排序 return client.Find(filter).Sort(sort).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList(); } //指定查詢字段 var fieldList = new List<ProjectionDefinition<T>>(); for (int i = 0; i < field.Length; i++) { fieldList.Add(Builders<T>.Projection.Include(field[i].ToString())); } var projection = Builders<T>.Projection.Combine(fieldList); fieldList?.Clear(); //不排序 if (sort == null) return client.Find(filter).Project<T>(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList(); //排序查詢 return client.Find(filter).Sort(sort).Project<T>(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList(); } catch (Exception ex)  {    throw ex;  }}#endregion

三、調用查詢方法

這里還踩了一個坑. MongoDB里存儲的時間是格林尼治時間, 插入8:00, 查詢時會發現變成了0:00,所以定義時間屬性的時候需要加個標簽

[BsonDateTimeOptions(Kind = DateTimeKind.Local)]public DateTime logtime { get; set; }

這里的OprLogModel是定義了查詢條件的類.

public static LogPager<log_operate> Get_operate_log_mongo(OprLogModel qModel){  LogPager<log_operate> pager = new LogPager<log_operate>();  FilterDefinition<log_operate> filters;   var sortbuilder = Builders<log_operate>.Sort;  var sort = sortbuilder.Descending("operate_time");  #region 用戶權限過濾  IEnumerable<string> IdList = dev_deviceRepository.GetBinding(qModel.user_id);   filters = Builders<log_operate>.Filter.In("device_id", IdList);  #endregion  if (!string.IsNullOrEmpty(qModel.device_id)) {   var filters_did = Builders<log_operate>.Filter.Eq("device_id", qModel.device_id);   filters = Builders<log_operate>.Filter.And(filters, filters_did);  }  if (qModel.sDate != null)  {    var filters_sdate = Builders<log_operate>.Filter.Gte<DateTime>("operate_time", Convert.ToDateTime(qModel.sDate));    filters = Builders<log_operate>.Filter.And(filters, filters_sdate);  }  if (qModel.eDate != null)  {    var filters_edate = Builders<log_operate>.Filter.Lte<DateTime>("operate_time", Convert.ToDateTime(qModel.eDate));    filters = Builders<log_operate>.Filter.And(filters, filters_edate);  }  int total;  pager.data = MongoTools<log_operate>.FindListByPage(filters, qModel.pageindex, (qModel.pageindex - 1) * qModel.pagesize, out total, null, sort);  pager.total = total;  return pager;}#endregion

也可以先定義一個空的filterdefinition, 然后與各查詢條件通過And聚合:

FilterDefinition<log_operate> filters = FilterDefinition<log_operate>.Empty;var filters_idlist = Builders<log_operate>.Filter.In("device_id", IdList);filters = Builders<log_operate>.Filter.And(filters, filters_idlist);

以上就是.Net Core如何對MongoDB執行多條件查詢的詳細內容,更多關于.Net Core對MongoDB 多條件查詢的資料請關注真格學網其它相關文章!

1.第一個地方的編碼格式為jsp文件的存儲格式。Eclipse會根據這個編碼格式保存文件。并編譯jsp文件,包括里面的漢字。第二處編碼為解碼格式。因為存為UTF-8的文件被解碼為iso8859-1,這樣如有中文肯定出亂碼。也就是必須一致。而第二處所在的這一行,可以沒有。缺省也是使用iso8859-1的編碼格式。所以如果沒有這一行的話,“我是個好人”也會出現亂碼。必須一致才可以。第三處編碼為控制瀏覽器的解碼方式。如果前面的解碼都一致并且無誤的話,這個編碼格式沒有關系。有的網頁出現亂碼,就是因為瀏覽器不能確定使用哪種編碼格式。因為頁面有時候會嵌入頁面,導致瀏覽器混淆了編碼格式。出現了亂碼。2.表單使用Post方式提交后接收到的亂碼問題這個問題也是一個常見的問題。這個亂碼也是tomcat的內部編碼格式iso8859-1在搗亂,也就是說post提交時,如果沒有設置提交的編碼格式,則會以iso8859-1方式進行提交,接受的jsp卻以utf-8的方式接受。導致亂碼。既然這樣的原因,下面有幾種解決方式,并比較。A,接受參數時進行編碼轉換內容來自www.anxorj.tw請勿采集。


  • 本文相關:
  • asp.net core集成mongodb的完整步驟
  • .net core連接mongodb數據庫的步驟詳解
  • asp.net下讓gridview鼠標滑過光棒變色效果
  • asp.net(c#)下各種進制間的輕松轉換(2進制、8進制、10進制、16進
  • javascript調用webservice的多種方法
  • asp.net從字符串中查找字符出現次數的具體實現方法
  • asp.net ext grid 顯示列表
  • asp.net 上傳大文件解決方案
  • microsoft visual studio 2017 for mac preview安裝使用案例分享
  • asp.net內置對象之request對象(概述及應用)
  • vs+opencv實現鼠標移動圖片
  • asp.net下比較兩個等長字符串是否含有完全相同字符(忽略字符順序
  • 如何解決.net core亂碼問題
  • 如何驗證.net core安裝成功
  • net core 怎么操作數據庫
  • net core程序怎么一直跑著
  • 關于.net core如何調用HttpContext問題
  • 如何利用.NET Core搭建跨平臺的控制臺應用程序
  • net core 怎么脫離iis
  • 如何驗證.net core安裝成功
  • Net 框架和.Net Core,我該用哪個?怎么選
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全基礎應用實用技巧自學過程首頁asp.netasp.net core集成mongodb的完整步驟.net core連接mongodb數據庫的步驟詳解asp.net下讓gridview鼠標滑過光棒變色效果asp.net(c#)下各種進制間的輕松轉換(2進制、8進制、10進制、16進javascript調用webservice的多種方法asp.net從字符串中查找字符出現次數的具體實現方法asp.net ext grid 顯示列表asp.net 上傳大文件解決方案microsoft visual studio 2017 for mac preview安裝使用案例分享asp.net內置對象之request對象(概述及應用)vs+opencv實現鼠標移動圖片asp.net下比較兩個等長字符串是否含有完全相同字符(忽略字符順序java正則表達式 pattern和matche未將對象引用設置到對象的實例 (asp.net(c#)網頁跳轉七種方法小結未能加載文件或程序集“xxx”或它asp.net“服務器應用程序不可用”asp.net中的幾種彈出框提示基本實asp.net gridview 72般絕技asp.net生成excel并導出下載五種asp.net對路徑"xxxxx"asp.net漢字轉拼音和獲取漢字首字asp.net第一次訪問慢的完美解決方案(mvcasp.net創建位圖生成驗證圖片類(驗證碼類深入講解.net core中的api版本控制.net 實現圖片縮略圖上傳通用方法asp.net 頁面輸出緩存asp.net javascript 的幾種寫法與提示asp.net bundle功能擴展關閉子頁面刷新父頁面中部分控件數據的方asp.net core中服務的生命周期選項區別與asp.net通過ajax updatepanel回傳后滾動條
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.anxorj.tw All Rights Reserved
    陕西快乐10分下载