.Net Core使用MongoDB的詳細(xì)教程
前言
MongoDB 是由C++語言編寫的,是一個基于分布式且面向文檔存儲的開源數(shù)據(jù)庫系統(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ù)庫,沒有則自動創(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 = "暫無";
//添加一條數(shù)據(jù)
student.InsertOne(data);
在圖形化界面中查看一下


Mongodb默認(rèn)用id做主鍵,因此不會顯式的指定id是主鍵。Mongdb中沒有內(nèi)置"自增字段",可以把id聲明為ObjectId類型,這樣插入以后就自動給字段賦值。
例如,建一個類:
public class School
{
public ObjectId id { get; set; }
public string name { get; set; }
public string address { get; set; }
}//需引入命名空間 using MongoDB.Bson;


當(dāng)然School對象之后多加或者去掉一個字段都行。Mongodb是用Json保存的,因此也可以直接用Json格式插入,可用BsonDocument對象作為泛型對象。
//與Mongodb建立連接
MongoClient client = new MongoClient("mongodb://127.0.0.1");
//獲得數(shù)據(jù)庫,沒有則自動創(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號',remarks:'暫無!'}";
BsonDocument bsons = BsonDocument.Parse(json);

學(xué)生和學(xué)校是有對應(yīng)關(guān)系的,我們可以添加有嵌套關(guān)系類型的對象
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ù)庫,沒有則自動創(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 = "暫無";
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ù)庫,沒有則自動創(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á)式來查找數(shù)據(jù)
//與Mongodb建立連接
MongoClient client = new MongoClient("mongodb://127.0.0.1");
//獲得數(shù)據(jù)庫,沒有則自動創(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();
分頁查詢:
//與Mongodb建立連接
MongoClient client = new MongoClient("mongodb://127.0.0.1");
//獲得數(shù)據(jù)庫,沒有則自動創(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ù)庫,沒有則自動創(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ù)庫,沒有則自動創(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);//只刪除一個

MongoDB中文網(wǎng):https://www.mongodb.org.cn
總結(jié)
到此這篇關(guān)于.Net Core使用MongoDB的完整步驟的文章就介紹到這了,更多相關(guān).Net Core使用MongoDB內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET MVC中SignalR的簡單應(yīng)用
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC中SignalR的簡單應(yīng)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
ASP.NET Core 奇淫技巧之偽屬性注入的實現(xiàn)
這篇文章主要介紹了ASP.NET Core 奇淫技巧之偽屬性注入的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
客戶端用JavaScript填充DropDownList控件 服務(wù)器端讀不到值
今天遇到一個奇怪的問題,某一頁面需要使用三級級聯(lián)下拉列表框。為提高用戶體驗,采用jQuery的cascadingDropDown插件調(diào)用后臺Web Services來實現(xiàn)ajax填充。2010-09-09
MVC+EasyUI+三層新聞網(wǎng)站建立 詳情頁面制作方法(八)
這篇文章主要為大家詳細(xì)介紹了MVC+EasyUI+三層新聞網(wǎng)站建立的第八篇,教大家如何制作詳情頁面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Microsoft SQL Server 2005 Express 遠(yuǎn)程訪問設(shè)置詳述,100%成功篇
Microsoft SQL Server 2005 Express Edition是Microsoft數(shù)據(jù)庫的低端解決方案,是免費的,并且可以隨軟件免費發(fā)布,而就其數(shù)據(jù)庫功能對于一般的企業(yè)級應(yīng)用已足夠了。但 默認(rèn)安裝時只允許本地訪問,而不能遠(yuǎn)程訪問。2009-03-03

