亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

.Net中MoongoDB的簡(jiǎn)單調(diào)用圖文教程

 更新時(shí)間:2019年10月17日 08:27:55   作者:whitebbai  
這篇文章主要給大家介紹了關(guān)于.Net中MoongoDB的簡(jiǎn)單調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

本文主要給大家介紹了關(guān)于.Net中MoongoDB調(diào)用的方法,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧

方法如下:

1、安裝.Net 驅(qū)動(dòng):Install-Package MongoDB.Driver

2、數(shù)據(jù)插入 ,鏈接數(shù)據(jù)庫(kù)  

//新建Person測(cè)試類(lèi)
 public class Person
 {
  public long Id { get; set; }
  public int Age { get; set; }
  public string Name { get; set; }
  public int Height { get; set; }
  public TestPerson t1{ get; set; }
 }
 public class TestPerson {
  public string Name { get; set; }
 }
 public class ObjectPerson {
  public ObjectId Id { get; set; }
  public int Age { get; set; }
  public string Name { get; set; }
  public int Height { get; set; }
 }
MongoClient client = new MongoClient("mongodb://127.0.0.1");
 IMongoDatabase database = client.GetDatabase("TestDb");//相當(dāng)于數(shù)據(jù)庫(kù)
 IMongoCollection<Person> collection = database.GetCollection<Person>("Persons");//大致相當(dāng)于表
 Person p1 = new Person()
 {
 Id = 2,
 Name = "test1",
 Age = 29,
 Height=130
 };   
 collection.InsertOne(p1);//單條插入也支持異步方法,后面建議都用異步的!習(xí)慣成自然!

回到客戶(hù)端工具刷新一下,就能看到新插入的數(shù)據(jù),MongoDB 會(huì)自動(dòng)創(chuàng)建“數(shù)據(jù)庫(kù)” 以及 Collection(約等于“表”)。MongoDB 默認(rèn)用 id 做主鍵,因此不用顯式指定 id 是主鍵。

MongoDB 中沒(méi)有內(nèi)置“自增字段”,可以把 Id 聲明為 ObjectId 類(lèi)型(using MongoDB.Bson) 這樣插入以后就自動(dòng)給字段賦值。

 //多條插入
 IMongoCollection<ObjectPerson> collection1 = database.GetCollection<ObjectPerson>("ObjectPersons");//大致相當(dāng)于表
 List<ObjectPerson> persons = new List<ObjectPerson>() { new ObjectPerson() { Name = "test2", Age = 30, Height = 135 }, new ObjectPerson() { Name = "test3", Age = 31, Height = 140 } };
 collection1.InsertMany(persons);//多條插入


MongoDB 是用 json 保存的,因此也可以直接以 json 格式插入,用 BsonDocument 來(lái)代表:

IMongoCollection<BsonDocument> dogs = database.GetCollection<BsonDocument>("Dogs");
string jsondata = "{id:8999,Age:81,Name:'japan',gender:true}";
BsonDocument p2 = BsonDocument.Parse(jsondata);
dogs.InsertOne(p2);


還可以插入有嵌套關(guān)系的對(duì)象,比如學(xué)生和老師,注意不會(huì)有表間關(guān)系,都是存到一個(gè)集合中,注意和關(guān)系庫(kù)不一樣。

IMongoCollection<Person> collection = database.GetCollection<Person>("Persons");//大致相當(dāng)于表
Person p1 = new Person()
{
 Id = 2,
 Name = "test1",
 Age = 29,
 Height=130,
 t1=new TestPerson() { Name="222"}
};   
 collection.InsertOne(p1);//單條插入


3、MongoDB查詢(xún)

IMongoCollection<Person> collection = database.GetCollection<Person>("Persons");
var filter = Builders<Person>.Filter.Gt(p => p.Age,5);
var filter1 = Builders<Person>.Filter.And(Builders<Person>.Filter.Gt(p => p.Age, 5), Builders<Person>.Filter.Eq(p => p.Id, 1));// And 并且 還有or方法
var filter2 = Builders<Person>.Filter.Where(p => p.Age > 5 && p.Id == 1);//和上面的寫(xiě)法是一樣的但是,建議用Where方法
 //普通查詢(xún)
var result= collection.Find(filter).ToList();
foreach (var item in result)
{
 Console.WriteLine(item.Age + item.Name);
}

除了 Gt,還有 Gte、In、Lt、Lte、Ne、Nin、Near、NearSphere、Or、Where、And、Not。 當(dāng)然最常用的還是 Where 操作:

 異步查詢(xún)

//異步查詢(xún)
 using (IAsyncCursor<Person> personsCursor = await collection.FindAsync<Person>(filter)) {
 while (personsCursor.MoveNextAsync().Result)//獲取下一組數(shù)據(jù),相當(dāng)于是否有指針,MongoDB其實(shí)是返回一個(gè)組,不像sql每次是一次次取
 {
 IEnumerable<Person> items = personsCursor.Current;//返回當(dāng)前組的數(shù)據(jù)
 foreach (var item in items)
 {
  Console.WriteLine(item.Age + item.Name);
 }
 }
 //如果數(shù)據(jù)量不大,可以直接tolist
 var results = personsCursor.ToList();
}

  為什么 FindAsync 不直接返回集合,而是要 MoveNext 之后返回一個(gè)集合呢?因?yàn)榉祷?的數(shù)據(jù)量可能很大,因此 MongoDB 是分批下載,下載一批之后執(zhí)行 GET_More 操作返回下 一批??梢酝ㄟ^(guò) FindOptions 參數(shù)的 BatchSize 設(shè)置每一批的大小。

  如果確認(rèn)返回的數(shù)據(jù)量 不大,可以 var ps = await personsCursor.ToListAsync()(或者 ToEnumerable()等)一下子返回所有數(shù)據(jù)。還有 Any、First、FirstOrDefault 等以及異步操作。需要注意 MongoDB 中查詢(xún)區(qū)分大小寫(xiě)。

4、分頁(yè)查詢(xún)

//分頁(yè)
FindOptions<Person, Person> findop = new FindOptions<Person, Person>();
findop.Limit = 3;//取最多幾條
findop.Skip = 2;//跳過(guò)幾條
findop.Sort = Builders<Person>.Sort.Ascending(p => p.Age).Ascending(p => p.Name);//排序
using (var cursor = collection.FindAsync(filter, findop).Result)
{
 var items = cursor.ToList();
 foreach (var item in items)
 {
 Console.WriteLine(item.Age + item.Name);
 }
}

  指定排序規(guī)則 findop.Sort = Builders<Person>.Sort.Ascending(p => p.Age).Ascending(p => p.Name);

5、Json格式取法

//json格式取法
IMongoCollection<BsonDocument> bsonDoc = database.GetCollection<BsonDocument>("Persons");
var filter4 = Builders<BsonDocument>.Filter.Gt("Age", 5);
using (var persons=await bsonDoc.FindAsync(filter4)) 
{
 foreach (var item in await persons.ToListAsync())
 {
 Console.WriteLine(item.GetValue("Name").AsString);
 }
}

6、Update更新操作

IMongoCollection<Person> upPersons = database.GetCollection<Person>("Persons");
var upFilter = Builders<Person>.Filter.Where(p => p.Age>20);//篩選條件
var update = Builders<Person>.Update.Set(c => c.Name, "test2");//更新條件,將Name更新成test2
upPersons.UpdateMany(filter, update);

7、Delete刪除操作

IMongoCollection<Person> teachers = database.GetCollection<Person>("Persons");
var deletefilter = Builders<Person>.Filter.Where(p => p.Id == 1);
teachers.DeleteMany(deletefilter);

 用 Update 機(jī)會(huì)比較少,如果頻繁的用 Update 可能意味著用錯(cuò)了;也不要想著 join、group by, 還是場(chǎng)景不對(duì)!

8、MongoDB 應(yīng)用場(chǎng)景

  日志記錄系統(tǒng);設(shè)備監(jiān)控?cái)?shù)據(jù)的存儲(chǔ);餓了么外賣(mài)騎手接單; 存儲(chǔ)商品、商家信息;網(wǎng)站評(píng)論信息;存儲(chǔ)爬蟲(chóng)爬過(guò)來(lái)的第三方數(shù)據(jù);

  但是像訂單、金融交易、游戲裝備等這些關(guān)鍵信息不要用 MongoDB;

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • .NET Core 2.0遷移小技巧之web.config 配置文件示例詳解

    .NET Core 2.0遷移小技巧之web.config 配置文件示例詳解

    這篇文章主要給大家介紹了關(guān)于.NET Core 2.0遷移技巧之web.config 配置文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 簡(jiǎn)單Web service 身份驗(yàn)證解決方案

    簡(jiǎn)單Web service 身份驗(yàn)證解決方案

    問(wèn)題提出:為了構(gòu)建一個(gè)安全的web服務(wù),需要對(duì)調(diào)用方進(jìn)行身份驗(yàn)證,只讓通過(guò)審核的用戶(hù)調(diào)用web服務(wù)。
    2009-05-05
  • 詳解ASP.NET頁(yè)面生命周期事件

    詳解ASP.NET頁(yè)面生命周期事件

    這篇文章介紹了ASP.NET頁(yè)面生命周期事件,有需要的朋友可以參考一下
    2013-07-07
  • C# 給站點(diǎn)指定位置的某種格式的圖片添加水印

    C# 給站點(diǎn)指定位置的某種格式的圖片添加水印

    可以給站點(diǎn)指定位置的某種格式的圖片添加水印的c#實(shí)現(xiàn)代碼。
    2009-05-05
  • asp.net網(wǎng)站防惡意刷新的Cookies與Session解決方法

    asp.net網(wǎng)站防惡意刷新的Cookies與Session解決方法

    這篇文章主要介紹了asp.net網(wǎng)站防惡意刷新的Cookies與Session解決方法,分別以實(shí)例的形式講述了采用cookie法與session法實(shí)現(xiàn)WEB頁(yè)面防止惡意刷新的技巧,需要的朋友可以參考下
    2014-09-09
  • ASP.NET Core中使用LazyCache的全過(guò)程

    ASP.NET Core中使用LazyCache的全過(guò)程

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core中使用LazyCache的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Visual Studio 2017通過(guò)SSH調(diào)試Linux上.NET Core

    Visual Studio 2017通過(guò)SSH調(diào)試Linux上.NET Core

    這篇文章主要為大家詳細(xì)介紹了Visual Studio 2017通過(guò)SSH調(diào)試Linux 上.NET Core的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • asp.net5中用戶(hù)認(rèn)證與授權(quán)(2)

    asp.net5中用戶(hù)認(rèn)證與授權(quán)(2)

    ASP.NET5主要提供了兩種應(yīng)用程序,其一就是ASP.NET5控制臺(tái)程序,另外一個(gè)是ASP.NET Web 應(yīng)用程序。本文給大家介紹asp.net5中用戶(hù)認(rèn)證與授權(quán)(2),需要的童鞋可以參考下
    2015-10-10
  • Asp.Net Core實(shí)現(xiàn)Excel導(dǎo)出功能的實(shí)現(xiàn)方法

    Asp.Net Core實(shí)現(xiàn)Excel導(dǎo)出功能的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Asp.Net Core實(shí)現(xiàn)Excel導(dǎo)出功能的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • ASP.NET中操作數(shù)據(jù)庫(kù)的基本步驟分享

    ASP.NET中操作數(shù)據(jù)庫(kù)的基本步驟分享

    ASP.NET中操作數(shù)據(jù)庫(kù)的基本步驟分享,學(xué)習(xí)asp.net的朋友可以參考下。
    2011-10-10

最新評(píng)論