首頁 資料庫 mysql教程 MongoDB结合Flexgrid的简单数据呈现

MongoDB结合Flexgrid的简单数据呈现

Jun 07, 2016 pm 05:56 PM
mongodb 數據 簡單 結合

MongoDB结合Flexgrid的简单数据呈现 本示例以常用的:用户,帖子,评论为基础模型,实现了一个简单的MongoDB结合Flexgrid数据呈现的Demo。由于时间所限,功能上仅提供对MongoDB数据的常用查询操作(分页,排序,查询等)。高手请对我这种菜鸟多些包容。 一,

MongoDB结合Flexgrid的简单数据呈现

 

本示例以常用的:用户,帖子,评论为基础模型,实现了一个简单的MongoDB结合Flexgrid数据呈现的Demo。由于时间所限,功能上仅提供对MongoDB数据的常用查询操作(分页,排序,查询等)。高手请对我这种菜鸟多些包容。

 

一,准备工作:

MongoDB官方下载:

当前最新版本是2.2.0版本。话说,MongoDB的版本更新是相当的快。

 

本示例使用的MongoDB C#版驱动下载:
https://github.com/samus/mongodb-csharp
该驱动附源码和示例程序,有兴趣的朋友可以研究一下,对自己的编码能力会有很大的提高。用VS打开Source文件夹,编译后得到程序集,在自己的项目中引用即可。

 

这是官方邮件提供的 C#版驱动:
https://github.com/mongodb/mongo-csharp-driver/downloads
版本很多,而且基本上都是十多兆的东西,然后,没有然后。

 

如果你不习惯以命令行的方式对MongoDB进行操作和管理。推荐以下客户端管理工具:
1,MongoVUE。这应该是目前应用最广的了。
下载地址:

2,虚拟主机,博客园高手自己开发的MongoDB管理工具:

试用了一下,也是相当不错的!

 

虽然上述管理工具能够以图形化的方式与MongoDB交互,但强烈建议你运行mongo.exe客户端,以命令行的方式对MongoDB进行操作和管理,这会让你对MongoDB有更加直观而深刻的体会。另外,Windows8依然内置了DOS。

 

这里有MongoDB的常用命令:

 

这是Flexgrid的官方网站:

页面顶部有一个硕大的红色Download按钮。

 

TestDriven.net,必不可少的开发和测试工具。本示例需要用它向MongoDB中初始化测试数据。下载地址:

 

二,项目结构:

麻雀虽小,五脏俱全。整个项目结构是一个最原始的三层。直接上图:

三,技术细节:

1,MongoDB数据库操作。
ADO.NET虽然很强大,但我们通常需要自己动手写一个SqlHelper。MongoDB也一样,我们仍有必要在驱动的基础上对常用的数据操作进行封装。下面贴出本鸟写的MongoDB数据库操作类。大多数方法都与数据查询相关。贴出主要代码:

using System; using System.Collections.Generic; using System.Linq; using System.Configuration; using MongoDB; using MongoDB.Linq; using Mcmurphy.Commons.Enumerations; namespace Mcmurphy.DAL { public class MongoDBHelper { #region 基本信息 private static readonly string ConnectionString; private static readonly string DatabaseName; ///

/// 当前Mongo引用 /// private static Mongo mongo; /// /// 初始化数据库配置 /// static MongoDBHelper() { ConnectionString = ConfigurationManager.AppSettings["connString"]; DatabaseName = ConfigurationManager.AppSettings["currentDB"]; } /// /// 当前Mongo对象 /// private static Mongo CurrentMongo { get { return new Mongo(ConnectionString); } } /// /// 当前操作集合 /// private static IMongoCollection GetCollection() where T:class { try { mongo = CurrentMongo; mongo.Connect(); IMongoDatabase db = GetCurrentDataBase(); IMongoCollection collection = db.GetCollection(); return collection; } catch (Exception ex) { throw ex; } } /// /// 获取当前Mongo数据库对象 /// /// 当前Mongo数据库对象 private static IMongoDatabase GetCurrentDataBase() { return mongo.GetDatabase(DatabaseName); } #endregion #region 数据查询 /// /// 获取排序规则 /// private static IndexOrder GetIndexOrder(DataOrder order) { IndexOrder @orderby = order == DataOrder.Ascending ? IndexOrder.Ascending : IndexOrder.Descending; return orderby; } /// /// 根据条件进行查询,并进行分页 /// /// 类型参数 /// 条件Lamda表达式 /// 当前页索引 /// 分页大小 /// 结果集 public static IEnumerable GetBySearch(System.Linq.Expressions.Expression> selector, int pageIndex, int pageSize) where T : class { try { var currentCollection = GetCollection(); return currentCollection.Find(selector).Skip((pageIndex - 1) * pageSize).Limit(pageSize).Documents.ToList(); } catch (Exception ex) { throw ex; } finally { mongo.Disconnect(); mongo.Dispose(); } } /// /// 根据条件进行查询,并进行分页和排序 /// /// 类型参数 /// 条件Lamda表达式 /// 当前页索引 /// 分页大小 /// 排序规则 /// 排序字段 /// 结果集 public static IEnumerable GetBySearch(System.Linq.Expressions.Expression> selector, int pageIndex, int pageSize, DataOrder order, string orderField) where T : class { try { IndexOrder orderby = GetIndexOrder(order); var currentCollection = GetCollection(); return currentCollection.Find(selector).Sort(orderField, orderby).Skip((pageIndex - 1) * pageSize).Limit(pageSize).Documents.ToList(); } catch (Exception ex) { throw ex; } finally { mongo.Disconnect(); mongo.Dispose(); } } /// /// 根据条件查询一个对象 /// /// 类型参数 /// 查询条件Lamda表达式 /// 查询对象 public static T GetOneBySearch(System.Linq.Expressions.Expression> selector) where T : class { try { var currentCollection = GetCollection(); return currentCollection.FindOne(selector); } catch (Exception ex) { throw ex; } finally { mongo.Disconnect(); mongo.Dispose(); } } /// /// 根据查询条件获取总记录数 /// /// 类型参数 /// 查询条件 /// 记录数 public static long GetTotalCount(System.Linq.Expressions.Expression> selector) where T : class { try { var currentCollection = GetCollection(); return currentCollection.Count(selector); } catch (Exception ex) { throw ex; } finally { mongo.Disconnect(); mongo.Dispose(); } } /// /// 获取总记录数 /// /// 类型参数 /// 记录数 public static long GetTotalCount() where T : class { try { var currentCollection = GetCollection(); return currentCollection.Count(); } catch (Exception ex) { throw ex; } finally { mongo.Disconnect(); mongo.Dispose(); } } #endregion #region 数据插入 /// /// 数据插入 /// /// 类型参数 /// 要插入的数据对象 public static void Insert(T t) where T : class { try { var currentCollection = GetCollection(); currentCollection.Insert(t); } catch (Exception ex) { throw ex; } finally { mongo.Disconnect(); mongo.Dispose(); } } #endregion #region 数据更新 /// /// 根据查询条件更新数据 /// /// 类型参数 /// 待更新的对象 /// 更新的条件Lamda表达式 public static void Update(T t, System.Linq.Expressions.Expression> selector) where T : class { try { var currentCollection = GetCollection(); currentCollection.Update(t,selector); } catch (Exception ex) { throw ex; } finally { mongo.Disconnect(); mongo.Dispose(); } } /// /// 更新/插入数据(id是否存在) /// /// 类型参数 /// 待更新的对象 public static void Update(T t) where T : class { try { var currentCollection = GetCollection(); //inserts of updates depends on whether id exists currentCollection.Save(t); } catch (Exception ex) { throw ex; } finally { mongo.Disconnect(); mongo.Dispose(); } } #endregion #region 数据删除 /// /// 数据删除 /// /// 类型参数 /// 查询的条件Lamda表达式 public static void Delete(System.Linq.Expressions.Expression> selector) where T : class { try { var currentCollection = GetCollection(); currentCollection.Remove(selector); } catch (Exception ex) { throw ex; } finally { mongo.Disconnect(); mongo.Dispose(); } } #endregion } }

初次调用的时候,会读取在站点项目下Web.Config文件中配置的数据库服务器地址以及数据库名称。

 

2,Flexgrid加载的数据格式。
在官网上徘徊了很久也没有找到Flexgrid要求的数据格式说明。还好有Firebug,但遗憾的是官方示例采用的是XML格式。如下:

  1  234           ...      ...

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

AI新創集體跳槽OpenAI,Ilya出走後安全團隊重整旗鼓! AI新創集體跳槽OpenAI,Ilya出走後安全團隊重整旗鼓! Jun 08, 2024 pm 01:00 PM

上週,在內部的離職潮和外部的口誅筆伐之下,OpenAI可謂是內憂外患:-侵權寡姐引發全球熱議-員工簽署“霸王條款”被接連曝出-網友細數奧特曼“七宗罪」闢謠:根據Vox獲取的洩漏資訊和文件,OpenAI的高級領導層,包括Altman在內,非常了解這些股權回收條款,並且簽署了它們。除此之外,還有一個嚴峻而迫切的問題擺在OpenAI面前——AI安全。最近,五名與安全相關的員工離職,其中包括兩名最著名的員工,「超級對齊」團隊的解散讓OpenAI的安全問題再次被置於聚光燈下。 《財星》雜誌報道稱,OpenA

70B模型秒出1000token,程式碼重寫超越GPT-4o,來自OpenAI投資的程式碼神器Cursor團隊 70B模型秒出1000token,程式碼重寫超越GPT-4o,來自OpenAI投資的程式碼神器Cursor團隊 Jun 13, 2024 pm 03:47 PM

70B模型,秒出1000token,换算成字符接近4000!研究人员将Llama3进行了微调并引入加速算法,和原生版本相比,速度足足快出了快了13倍!不仅是快,在代码重写任务上的表现甚至超越了GPT-4o。这项成果,来自爆火的AI编程神器Cursor背后团队anysphere,OpenAI也参与过投资。要知道在以快著称的推理加速框架Groq上,70BLlama3的推理速度也不过每秒300多token。Cursor这样的速度,可以说是实现了近乎即时的完整代码文件编辑。有人直呼好家伙,如果把Curs

中國移動:人類正邁入第四次工業革命 正式公佈'三個計劃” 中國移動:人類正邁入第四次工業革命 正式公佈'三個計劃” Jun 27, 2024 am 10:29 AM

6月26日消息,在2024年世界行動通訊大會上海(MWC上海)開幕典禮上,中國移動董事長楊傑發表演說。他表示,當前,人類社會正邁入以資訊為主導、資訊和能量深度融合的第四次工業革命,即“數智化革命”,新質生產力加速形成。楊傑認為,從蒸汽機驅動的“機械化革命”,到電力、內燃機等驅動的“電氣化革命”,再到計算機和互聯網等驅動的“信息化革命”,每一輪工業革命都是以“信息和能量」為主線,帶來生產力發

美國教授用2歲女兒訓練AI模式登Science!人類幼崽頭戴相機訓練全新AI 美國教授用2歲女兒訓練AI模式登Science!人類幼崽頭戴相機訓練全新AI Jun 03, 2024 am 10:08 AM

絕了,為了訓練AI模型,一位紐約州立大學的教授,竟然把類似GoPro的相機綁在了自己女兒頭上!雖然聽起來不可思議,但這位教授的行為,其實是有據可循的。要訓練出LLM背後的複雜神經網絡,就需要大量資料。目前我們訓練LLM的過程,一定是最簡潔、最有效率的方式嗎?肯定不是!科學家發現,蹣跚學步的人類兒童,大腦就像海綿吸水一樣,能迅速形成一個連貫的世界觀。雖然LLM時有驚人的表現,但隨著時間的推移,人類兒童會比模型更聰明、更有創造力!兒童掌握語言的秘密如何用更好的方法訓練LLM?科學家們苦思不得其解之時,

net4.0有什麼用 net4.0有什麼用 May 10, 2024 am 01:09 AM

.NET 4.0 用於創建各種應用程序,它為應用程式開發人員提供了豐富的功能,包括:物件導向程式設計、靈活性、強大的架構、雲端運算整合、效能最佳化、廣泛的程式庫、安全性、可擴展性、資料存取和行動開發支援。

谷歌搜尋演算法內幕被扒,2500頁鉅細文件實名洩密!搜尋排名謊言被揭穿 谷歌搜尋演算法內幕被扒,2500頁鉅細文件實名洩密!搜尋排名謊言被揭穿 Jun 11, 2024 am 09:14 AM

日前,Google2500頁的內部文件被洩露,揭示了搜尋——「網路最強大的仲裁者」的運作方式。 SparkToro的聯合創始人兼CEO是一位匿名人士,他在個人網站上發表博客文章,宣稱“一位匿名人士與我分享了數千頁洩露的谷歌搜索API文檔,SEO中的每個人都應該看到它們!既然在這個領域德高望重,RandFishkin

如何在Debian上配置MongoDB自動擴容 如何在Debian上配置MongoDB自動擴容 Apr 02, 2025 am 07:36 AM

本文介紹如何在Debian系統上配置MongoDB實現自動擴容,主要步驟包括MongoDB副本集的設置和磁盤空間監控。一、MongoDB安裝首先,確保已在Debian系統上安裝MongoDB。使用以下命令安裝:sudoaptupdatesudoaptinstall-ymongodb-org二、配置MongoDB副本集MongoDB副本集確保高可用性和數據冗餘,是實現自動擴容的基礎。啟動MongoDB服務:sudosystemctlstartmongodsudosys

MongoDB在Debian上的高可用性如何保障 MongoDB在Debian上的高可用性如何保障 Apr 02, 2025 am 07:21 AM

本文介紹如何在Debian系統上構建高可用性的MongoDB數據庫。我們將探討多種方法,確保數據安全和服務持續運行。關鍵策略:副本集(ReplicaSet):利用副本集實現數據冗餘和自動故障轉移。當主節點出現故障時,副本集會自動選舉新的主節點,保證服務的持續可用性。數據備份與恢復:定期使用mongodump命令進行數據庫備份,並製定有效的恢復策略,以應對數據丟失風險。監控與報警:部署監控工具(如Prometheus、Grafana)實時監控MongoDB的運行狀態,並

See all articles