1.回顧:上篇學習了Mongodb的基本命令學習
2.這篇將學習使用Mongodb的C# Drivers實現增刪改查
3.準備:
3.1 C# Drivers支援情況
面對現在的學習,我們還是使用 Version2.0版本,因為它支援全部的的.NET , 因為技術是越來越成熟的;
3.2 .NET 平台對 Mongodb版本的支援情況如下 :全部支援
3.3 下載
Mongdb C#驅動 和 確定你已經配置和安裝好你的Mongodb,若下載不下來的話,可以 點我下載。
4.使用 4.1 引用
(1) 開啟vs2012及vs2012 版本以上 (.NET FrameWork4.5),建立項目,什麼項目都行,能夠測試就行,這裡 使用控制台應用程式,
(2)引用 所有dll ;
4.2 串連mongdb
在串連之前,保證你 開啟了 mongodb 服務,若不記得怎麼開啟,請訪問 :點擊學習開啟服務
5. 建立MongoDb操作工具類 花了1個小時,寫的工具類,測試測試吧。封裝好了 mongdb串連 ,增刪改查和建立集合
<pre name="code" class="csharp">using MongoDB.Bson;using MongoDB.Driver;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MongoDBDemo1{ public class Connection { //建立資料庫連接 MongoServerSettings setting = new MongoServerSettings(); MongoServerAddress address =new MongoServerAddress("127.0.0.1", 27017); MongoServer server = null; string dbName=string.Empty; /// <summary> /// 得到串連 /// </summary> public Connection() { setting.Server = address; server = new MongoServer(setting); } /// <summary> /// 建構函式 獲得 dbname /// </summary> /// <param name="dbname">資料庫名稱</param> public Connection(string dbname) { this.dbName = dbname; setting.Server = address; server = new MongoServer(setting); } /// <summary> /// 外部調用得到資料庫 /// </summary> /// <param name="dbName"></param> /// <returns></returns> public MongoDatabase getMongoDataBase(string dbName) { return server.GetDatabase(dbName); } /// <summary> /// 重載 得到資料庫 /// </summary> /// <returns></returns> public MongoDatabase getMongoDataBase() { return server.GetDatabase(dbName); } /// <summary> /// 建立集合 /// </summary> /// <param name="colName">集合名字</param> /// <returns></returns> public bool createCollection(string colName) { MongoDatabase db = this.getMongoDataBase(); CommandResult result= db.CreateCollection(colName); if (result.Ok) { return true; } else { return false; } } /// <summary> /// 外部調用 /// </summary> /// <param name="colName">集合名稱</param> /// <param name="db">資料庫物件</param> /// <returns></returns> public MongoCollection<BsonDocument> getMongoColl(string colName,MongoDatabase db){ return db.GetCollection(colName); } /// <summary> /// 內部使用 /// </summary> /// <param name="colName">集合名稱</param> /// <returns></returns> public MongoCollection<BsonDocument> getMongoColl(string colName){ return this.getMongoDataBase().GetCollection(colName); } /// <summary> /// 查詢操作 /// </summary> /// <param name="colName">集合名詞</param> /// <param name="query">條件</param> /// <returns></returns> public MongoCursor<BsonDocument> select(string colName,IMongoQuery query){ MongoCollection<BsonDocument> mcoll=getMongoColl(colName); try { if (query == null) { return mcoll.FindAll(); } else { return mcoll.Find(query); } } finally { this.mongoClose(); } } /// <summary> /// 增加操作 /// </summary> /// <param name="colName">集合名稱</param> /// <param name="bson">單條資料</param> /// <returns></returns> public bool insert(string colName,BsonDocument bson) { MongoCollection<BsonDocument> mcoll = getMongoColl(colName); try { mcoll.Insert(bson); return true; } catch { return false; } finally { this.mongoClose(); } } /// <summary> /// 增加多條 /// </summary> /// <param name="colName">集合名稱</param> /// <param name="bsonlist">資料集合</param> /// <returns></returns> public bool insert(string colName, List<BsonDocument> bsonlist) { MongoCollection<BsonDocument> mcoll = getMongoColl(colName); try { foreach (BsonDocument bson in bsonlist) { mcoll.Insert(bson); } return true; } catch { return false; } finally { this.mongoClose(); } } /// <summary> /// 修改操作 /// </summary> /// <param name="colName">集合名稱</param> /// <param name="query">條件</param> /// <param name="upd">修改的內容</param> /// <returns></returns> public bool update(string colName, IMongoQuery query,IMongoUpdate upd) { MongoCollection<BsonDocument> mcoll = getMongoColl(colName); try { mcoll.Update(query, upd); return true; } catch { return false; } finally { this.mongoClose(); } } /// <summary> /// 刪除操作 /// </summary> /// <param name="cloName">集合名稱</param> /// <param name="query">條件</param> /// <param name="flag">是否為0 ,為0 則刪除 滿足條件的全部資訊</param> /// <returns>false/true</returns> public bool delete(string cloName, IMongoQuery query,int flag) { MongoCollection<BsonDocument> mcol = this.getMongoColl(cloName); try { if (flag == 0) { mcol.Remove(query, RemoveFlags.None); } else { mcol.Remove(query, RemoveFlags.Single); } return true; } catch { return false; } finally { this.mongoClose(); } } /// <summary> /// 關閉串連 /// </summary> public void mongoClose(){ server.Disconnect(); } }}
6.實現增刪改查
6.1 瞭解 如果你看前面的在命令列下操作mongodb的話,就開始6.3吧。
6.2 建立串連 執行個體化 串連類,聲明資料庫名,和集合名。
string dbname = "student"; string colName = "yuan"; Connection conn = new Connection(dbname);
6.3 建立集合 調用建立方法
bool type= conn.createCollection(colName); if (type) { Console.WriteLine("建立成功。"); } else { Console.WriteLine("建立失敗。"); } Console.ReadKey();
6.4 插入單條資訊
BsonDocument bson = new BsonDocument("name","csdn"); bool type= conn.insert(colName, bson); if (type) { Console.WriteLine("增加資料成功。"); } else { Console.WriteLine("增加資料成功失敗。"); }
6.5 插入多條資訊
Dictionary<string,string> dic=new Dictionary<string,string>(); dic.Add("name","ming"); dic.Add("age","23"); dic.Add("collage","hpu"); dic.Add("sno","31120907"); Dictionary<string, string> dic1 = new Dictionary<string, string>(); dic1.Add("name", "zhuo"); dic1.Add("age", "10"); dic1.Add("collage", "hpu"); dic1.Add("sno", "31120908"); List<BsonDocument> list = new List<BsonDocument>() { new BsonDocument(dic), new BsonDocument(dic1) }; bool type=conn.insert(colName, list); if (type) { Console.WriteLine("增加資料成功。"); } else { Console.WriteLine("增加資料成功失敗。"); } Console.ReadKey();
6.6 簡單查詢
MongoCursor<BsonDocument> cursor = conn.select(colName, null); foreach (BsonDocument bson in cursor) { Console.WriteLine(bson.ToString()); } Console.ReadKey();
結果如下:
6.7 條件查詢
//條件查詢 QueryDocument query = new QueryDocument("collage", "hpu"); MongoCursor<BsonDocument> cursor = conn.select(colName, query); foreach (BsonDocument bson in cursor) { Console.WriteLine(bson.ToString()); } Console.ReadKey();
結果如下:
6.8 修改操作
QueryDocument query = new QueryDocument("name", "zhuo"); Dictionary<string, string> dic1 = new Dictionary<string, string>(); dic1.Add("name", "zhuo"); dic1.Add("age", "23"); dic1.Add("collage", "hpu"); dic1.Add("sno", "31120908"); UpdateDocument upd = new UpdateDocument(dic1); bool type = conn.update(colName, query, upd); if (type) { Console.WriteLine("修改資料成功。"); } else { Console.WriteLine("修改資料失敗。"); } //查看修改資訊 QueryDocument query1 = new QueryDocument("name", "zhuo"); MongoCursor<BsonDocument> cursor = conn.select(colName, query1); foreach (BsonDocument bson in cursor) { Console.WriteLine(bson.ToString()); } Console.ReadKey();
結果如下:
6.9 刪除操作
//先查詢下全部 Console.WriteLine("我是全部"); MongoCursor<BsonDocument> cursor = conn.select(colName, null); foreach (BsonDocument bson in cursor) { Console.WriteLine(bson.ToString()); } //刪除age等於23的 QueryDocument query = new QueryDocument("age","23"); //第三個參數 為0時刪除滿足條件的所有,為其他數字是,僅刪除1條 bool type=conn.delete(colName, query, 1); Console.WriteLine("我是刪除後的。"); MongoCursor<BsonDocument> cursor1 = conn.select(colName, null); foreach (BsonDocument bson in cursor1) { Console.WriteLine(bson.ToString()); }
效果圖如下:
7.總結 :這裡僅僅示範了簡單的增刪改查,後面,大量的條件查詢,還行練習 8. demo 下載
下篇 將學習 JAVA Driver的使用。