.Net Core使用MongoDB的詳細(xì)教程
前言
MongoDB 是由C++語(yǔ)言編寫(xiě)的,是一個(gè)基于分布式且面向文檔存儲(chǔ)的開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng)。
下載地址:
https://www.mongodb.com/download-center/community
在.Net Core中使用需要引入核心包 MongoDB.Driver
添加數(shù)據(jù):
//與Mongodb建立連接 MongoClient client = new MongoClient("mongodb://127.0.0.1"); //獲得數(shù)據(jù)庫(kù),沒(méi)有則自動(dòng)創(chuàng)建 IMongoDatabase db = client.GetDatabase("db1"); //拿到集合(表) IMongoCollection<Student> student = db.GetCollection<Student>("Student"); var data = new Student(); data.id = 1; data.name = "江北"; data.age = 22; data.remarks = "暫無(wú)"; //添加一條數(shù)據(jù) student.InsertOne(data);
在圖形化界面中查看一下
Mongodb默認(rèn)用id做主鍵,因此不會(huì)顯式的指定id是主鍵。Mongdb中沒(méi)有內(nèi)置"自增字段",可以把id聲明為ObjectId類型,這樣插入以后就自動(dòng)給字段賦值。
例如,建一個(gè)類:
public class School { public ObjectId id { get; set; } public string name { get; set; } public string address { get; set; } }//需引入命名空間 using MongoDB.Bson;
當(dāng)然School對(duì)象之后多加或者去掉一個(gè)字段都行。Mongodb是用Json保存的,因此也可以直接用Json格式插入,可用BsonDocument對(duì)象作為泛型對(duì)象。
//與Mongodb建立連接 MongoClient client = new MongoClient("mongodb://127.0.0.1"); //獲得數(shù)據(jù)庫(kù),沒(méi)有則自動(dòng)創(chuàng)建 IMongoDatabase db = client.GetDatabase("db1"); //拿到集合(表) IMongoCollection<BsonDocument> document = db.GetCollection<BsonDocument>("School"); db.GetCollection<BsonDocument>("School"); var json = "{id:1,name:'xx學(xué)校',address:'xxx路xx號(hào)',remarks:'暫無(wú)!'}"; BsonDocument bsons = BsonDocument.Parse(json);
學(xué)生和學(xué)校是有對(duì)應(yīng)關(guān)系的,我們可以添加有嵌套關(guān)系類型的對(duì)象
public class Student { public int id { get; set; } public string name { get; set; } public int age { get; set; } public string remarks { get; set; } public School School { get; set; } }
//與Mongodb建立連接 MongoClient client = new MongoClient("mongodb://127.0.0.1"); //獲得數(shù)據(jù)庫(kù),沒(méi)有則自動(dòng)創(chuàng)建 IMongoDatabase db = client.GetDatabase("db1"); //拿到集合(表) IMongoCollection<Student> student = db.GetCollection<Student>("Student"); Student student1 = new Student(); student1.id = 2; student1.name = "北晚舟"; student1.age = 22; student1.remarks = "暫無(wú)"; School school = new School(); school.name = "xxxSchool"; school.address = "xxxAddress"; student1.School = school; student.InsertOne(student1);
數(shù)據(jù)查詢:
//與Mongodb建立連接 MongoClient client = new MongoClient("mongodb://127.0.0.1"); //獲得數(shù)據(jù)庫(kù),沒(méi)有則自動(dòng)創(chuàng)建 IMongoDatabase db = client.GetDatabase("db1"); //拿到集合(表) IMongoCollection<Student> student = db.GetCollection<Student>("Student"); var data = Builders<Student>.Filter.Gt(m => m.age, 21);//Gt:大于 var result = student.Find(data).ToList();
我們安裝的NuGet包是支持Lamda表達(dá)式的,可用條件表達(dá)式來(lái)查找數(shù)據(jù)
//與Mongodb建立連接 MongoClient client = new MongoClient("mongodb://127.0.0.1"); //獲得數(shù)據(jù)庫(kù),沒(méi)有則自動(dòng)創(chuàng)建 IMongoDatabase db = client.GetDatabase("db1"); //拿到集合(表) IMongoCollection<Student> student = db.GetCollection<Student>("Student"); var data = Builders<Student>.Filter.Where(m => m.age > 21 && m.name.Contains("江")); var result = student.Find(data).ToList();
分頁(yè)查詢:
//與Mongodb建立連接 MongoClient client = new MongoClient("mongodb://127.0.0.1"); //獲得數(shù)據(jù)庫(kù),沒(méi)有則自動(dòng)創(chuàng)建 IMongoDatabase db = client.GetDatabase("db1"); //拿到集合(表) IMongoCollection<Student> student = db.GetCollection<Student>("Student"); var filter = Builders<Student>.Filter.Where(m => m.age > 21); FindOptions<Student, Student> findOpt = new FindOptions<Student, Student>(); findOpt.Limit = 2; findOpt.Skip = 1; findOpt.Sort = Builders<Student>.Sort.Ascending(m => m.age).Descending(m => m.name); var result = (student.FindAsync(filter, findOpt).Result).ToList();
數(shù)據(jù)更新:
//與Mongodb建立連接 MongoClient client = new MongoClient("mongodb://127.0.0.1"); //獲得數(shù)據(jù)庫(kù),沒(méi)有則自動(dòng)創(chuàng)建 IMongoDatabase db = client.GetDatabase("db1"); //拿到集合(表) IMongoCollection<Student> student = db.GetCollection<Student>("Student"); var filter = Builders<Student>.Filter.Where(m => m.age > 21); var update = Builders<Student>.Update.Set(m => m.name, "皮卡丘"); //update Student set name="皮卡丘" where age>21 student.UpdateMany(filter, update);
數(shù)據(jù)刪除:
//與Mongodb建立連接 MongoClient client = new MongoClient("mongodb://127.0.0.1"); //獲得數(shù)據(jù)庫(kù),沒(méi)有則自動(dòng)創(chuàng)建 IMongoDatabase db = client.GetDatabase("db1"); //拿到集合(表) IMongoCollection<Student> student = db.GetCollection<Student>("Student"); var filter = Builders<Student>.Filter.Where(m => m.age > 21); //delete from Student where age>21 //student.DeleteMany(filter); student.DeleteOne(filter);//只刪除一個(gè)
MongoDB中文網(wǎng):https://www.mongodb.org.cn
總結(jié)
到此這篇關(guān)于.Net Core使用MongoDB的完整步驟的文章就介紹到這了,更多相關(guān).Net Core使用MongoDB內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Equals和==的區(qū)別 公共變量和屬性的區(qū)別小結(jié)
Equals 和==的區(qū)別 公共變量和屬性的區(qū)別 總結(jié)一下。2009-11-11asp.net生成高質(zhì)量縮略圖通用函數(shù)(c#代碼),支持多種生成方式
這兩天正在研究報(bào)表中餅圖的繪圖方法,文章中的某些做法值得參考.2008-08-08asp.net 處理原文件中過(guò)長(zhǎng)的viewstate代碼
asp.net網(wǎng)頁(yè)原文件中總出現(xiàn)一段很長(zhǎng)的viewstate代碼看著就頭痛 所以在網(wǎng)上找了篇文章解決了這個(gè)問(wèn)題,雖然VIEWSTATE沒(méi)有完全隱藏,但大大的改善了網(wǎng)頁(yè)源文件中VIEWSTATE的長(zhǎng)度。2010-02-02JQuery運(yùn)用ajax注冊(cè)用戶實(shí)例(后臺(tái)asp.net)
JQuery運(yùn)用ajax注冊(cè)用戶實(shí)例,其實(shí)那中后臺(tái)語(yǔ)言都是差不多的形式。2009-12-12asp.net 相關(guān)文章實(shí)現(xiàn)方法
大家或許會(huì)覺(jué)得很驚訝:為什么靈感之源會(huì)討論SQL?或許應(yīng)該這樣說(shuō)吧:搞業(yè)務(wù)系統(tǒng),不跟SQL扯上關(guān)系似乎比較難。2009-05-05asp.net+Ajax校驗(yàn)用戶是否存在的實(shí)現(xiàn)代碼
主要技術(shù)點(diǎn) jquery ajax以及blur事件,當(dāng)用戶名輸入框失去焦點(diǎn)的時(shí)候就會(huì)觸發(fā)blur事件,然后進(jìn)行ajax請(qǐng)求,獲得結(jié)果(true或者false),如果請(qǐng)求結(jié)果為true,就把用戶名輸入框圖片替換成ok,并且輸出文字:恭喜您2012-05-05.Net基于Thread實(shí)現(xiàn)自旋鎖的三種方式
本文主要講解.Net基于Thread實(shí)現(xiàn)自旋鎖的三種方式,基于Test--And--Set原子操作實(shí)現(xiàn),包含優(yōu)缺點(diǎn)介紹,感興趣的朋友跟隨小編一起看看吧2021-06-06asp.net開(kāi)發(fā)微信公眾平臺(tái)之驗(yàn)證消息的真實(shí)性
這篇文章主要介紹了asp.net開(kāi)發(fā)微信公眾平臺(tái)之驗(yàn)證消息的真實(shí)性的相關(guān)資料,需要的朋友可以參考下2015-06-06ASP.NET中Response.BufferOutput屬性的使用技巧
這篇文章介紹了ASP.NET中Response.BufferOutput屬性的使用技巧,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07Asp.net后臺(tái)把腳本樣式輸出到head標(biāo)簽中節(jié)省代碼冗余
最近在學(xué)習(xí)開(kāi)發(fā)服務(wù)器控件,其它就少不了為控件注冊(cè)js和css之類的資源文件,或者直接注冊(cè)純腳本樣式。其中就遇到如下問(wèn)題 1、 注冊(cè)的資源文件或純腳本樣式在生成的頁(yè)面中都不在head標(biāo)簽中(當(dāng)然這個(gè)不影響頁(yè)面功能) 2、 一個(gè)頁(yè)面使用多個(gè)一樣的控件時(shí),會(huì)出現(xiàn)重復(fù)輸入(出現(xiàn)多余代碼)2013-02-02