最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#簡(jiǎn)單操作MongoDB的步驟全紀(jì)錄

 更新時(shí)間:2018年09月13日 11:14:51   作者:陳驚蟄  
最近花了不少時(shí)間研究學(xué)習(xí)了MongoDB數(shù)據(jù)庫(kù)的相關(guān)知識(shí),下面這篇文章主要給大家介紹了關(guān)于C#簡(jiǎn)單操作MongoDB的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧

前言

MongoDB是一款由C++編寫的高性能、開源、無模式的常用非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富、最像關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)。它擴(kuò)展了關(guān)系型數(shù)據(jù)庫(kù)的眾多功能,例如:輔助索引、范圍查詢、排序等。

MongoDB主要解決的是海量數(shù)據(jù)的訪問效率問題,它作為分布式數(shù)據(jù)崛起后,使用較多的一款非結(jié)構(gòu)數(shù)據(jù)庫(kù),必然有其值得稱道之處,它的主要功能特性如下:

1)面向集合的存儲(chǔ),適合存儲(chǔ)對(duì)象及JSON形式的數(shù)據(jù)。

2)動(dòng)態(tài)查詢,MongoDB支持豐富的查詢表達(dá)式。查詢指令使用JSON形式的標(biāo)記,可輕易查詢文檔中內(nèi)嵌的對(duì)象及數(shù)組。

3)完整的索引支持,包括文檔內(nèi)嵌對(duì)象及數(shù)組。MongoDB的查詢優(yōu)化器會(huì)分析查詢表達(dá)式,并生成一個(gè)高效的查詢計(jì)劃。

4)查詢監(jiān)視,MongoDB包含一個(gè)監(jiān)視工具用于分析數(shù)據(jù)庫(kù)操作的性能。

5)復(fù)制及自動(dòng)故障轉(zhuǎn)移,MongoDB數(shù)據(jù)庫(kù)支持服務(wù)器之間的數(shù)據(jù)復(fù)制,支持主-從模式及服務(wù)器之間的相互復(fù)制。復(fù)制的主要目標(biāo)是提供冗余及自動(dòng)故障轉(zhuǎn)移。

6)高效的傳統(tǒng)存儲(chǔ)方式,支持二進(jìn)制數(shù)據(jù)及大型對(duì)象(如圖片或視頻)。

7)自動(dòng)分片以支持云級(jí)別的伸縮性,自動(dòng)分片功能支持水平的數(shù)據(jù)庫(kù)集群,可動(dòng)態(tài)添加額外的機(jī)器。

本文主要給大家介紹了關(guān)于C#操作MongoDB的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧

一 安裝MongoDB

官網(wǎng)按需下載, 安裝, 一步到位.

二 VS創(chuàng)建新項(xiàng)目

創(chuàng)建一個(gè).netcore console項(xiàng)目, 然后nuget安裝驅(qū)動(dòng)MongoDB.Driver

三 建立連接

Program.Main函數(shù)中添加代碼

var client = new MongoClient("mongodb://127.0.0.1:27017");
var database = client.GetDatabase("foo"); 
var collection = database.GetCollection<BsonDocument>("bar");

三個(gè)對(duì)象, client是連接數(shù)據(jù)庫(kù)的客戶端, database對(duì)應(yīng)庫(kù), collection是對(duì)象集合.

對(duì)對(duì)象的操作是爭(zhēng)對(duì)collection來的.

四 操作

1> 插入

var document = new BsonDocument
  {
  { "name", "測(cè)試數(shù)據(jù)1" },
  { "type", "大類" },
  { "number", 5 },
  { "info", new BsonDocument
    {
    { "x", 111 },
    { "y", 222 }
    }}
  };
collection.InsertOne(document);

同理還有InsertMany() ,  鑒于VS高超的智能提示, 一目了然.

2> 查找

上一步插入之后, 通過find將它查找出來

find()需要一個(gè)filter參數(shù), 根據(jù)條件查詢

collection.Find(Builders<BsonDocument>.Filter.Empty);

上述表示無條件查詢, matches everything.

如果有條件的話, 可以從Builders<BsonDocument>.Filter中選擇, 比如Eq為相等, Lt為小于, Gt大于...顧名思義. 基于VS強(qiáng)大的智能提示, 非常清晰.

舉例條件查詢:

collection.Find(Builders<BsonDocument>.Filter.Eq("name", "測(cè)試數(shù)據(jù)1") & Builders<BsonDocument>.Filter.Lt("number", 6));

多項(xiàng)條件之間的與或關(guān)系, 對(duì)應(yīng)使用&和|符號(hào)

3> 更新

collection.UpdateMany(Builders<BsonDocument>.Filter.Eq("name", "測(cè)試數(shù)據(jù)1"), Builders<BsonDocument>.Update.Set("number", 6));

更新使用UpdateMany(), 同樣支持條件從Builders<BsonDocument>.Filter中獲取.

更新支持添加新的field, 如:

collection.UpdateMany(Builders<BsonDocument>.Filter.Eq("name", "測(cè)試數(shù)據(jù)1"), Builders<BsonDocument>.Update.Set("number2", 666));

4> 刪除

collection.DeleteMany()

其他幾個(gè)API大同小異

五 BsonDocument到自定義class Object的相互轉(zhuǎn)換

不要引入Json.Net(Newtonsoft.Json)

1> 自定義類型到BsonDocument

  擴(kuò)展函數(shù):

    entity.ToBsonDocument()

2> BsonDocument到自定義類型

  通常是在Find的時(shí)候吧,  IFindFluent.As<TEntity>()轉(zhuǎn)就可以了.

var result = collection
    .Find((Builders<BsonDocument>.Filter.Lt("number",999) & Builders<BsonDocument>.Filter.Gt("number", 110)) & Builders<BsonDocument>.Filter.Eq("name", "測(cè)試數(shù)據(jù)1"))          .OrderBy(x=>x["number"])//排序
    .Skip(10)//跳過
    .Limit(10)//限制    .As<Bar>()//m=>o
    .ToList();//像極了Linq吧?

  如果不是呢?

var entity = BsonSerializer.Deserialize<Bar>(bson);

用到的自定義class大概長(zhǎng)這樣:

public class Bar
 {
  public ObjectId _id { get; set; }
  public string name { get; set; }
  public string type { get; set; }
  public int number { get; set; }
  public int number2 { get; set; }
  public BarInfo info { get; set; }

  public class BarInfo
  {
   public int x { get; set; }
   public int y { get; set; }
  }
 }

小感想:

mongodb對(duì)程序員是極友好的, 可以動(dòng)態(tài)變化的結(jié)構(gòu), 讓程序員不再害怕頻繁變動(dòng)的需求.

總結(jié)

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

相關(guān)文章

  • 詳解C#異步多線程使用中的常見問題

    詳解C#異步多線程使用中的常見問題

    本文主要介紹了C#異步多線程使用中的常見問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C#中的Hangfire和Quartz.NET 任務(wù)調(diào)度的區(qū)別解析

    C#中的Hangfire和Quartz.NET 任務(wù)調(diào)度的區(qū)別解析

    Hangfire 和 Quartz.NET 是兩種常見的 C# 任務(wù)調(diào)度庫(kù),它們有不同的特點(diǎn)和使用場(chǎng)景,本文給大家介紹C#中的Hangfire和Quartz.NET 任務(wù)調(diào)度的區(qū)別,感興趣的朋友一起看看吧
    2024-08-08
  • C#中異步Socket通信編程代碼實(shí)例

    C#中異步Socket通信編程代碼實(shí)例

    這篇文章主要介紹了C#中異步Socket通信編程代碼實(shí)例,本文講解了什么是Socket編程的異步是實(shí)現(xiàn)、如何實(shí)現(xiàn)Socket異步通信并給出了代碼實(shí)例,需要的朋友可以參考下
    2015-03-03
  • C#事件中關(guān)于sender的用法解讀

    C#事件中關(guān)于sender的用法解讀

    這篇文章主要介紹了C#事件中關(guān)于sender的用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Unity3D動(dòng)態(tài)生成平面網(wǎng)格

    Unity3D動(dòng)態(tài)生成平面網(wǎng)格

    這篇文章主要為大家詳細(xì)介紹了Unity3D動(dòng)態(tài)生成平面網(wǎng)格,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#中FileSystemWatcher的使用教程

    C#中FileSystemWatcher的使用教程

    這篇文章主要給大家介紹了關(guān)于C#中FileSystemWatcher使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C# string轉(zhuǎn)unicode字符的實(shí)現(xiàn)

    C# string轉(zhuǎn)unicode字符的實(shí)現(xiàn)

    本文主要介紹了C# string轉(zhuǎn)unicode字符的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • c#動(dòng)態(tài)編譯執(zhí)行對(duì)象方法示例 運(yùn)用映射機(jī)制創(chuàng)建對(duì)象

    c#動(dòng)態(tài)編譯執(zhí)行對(duì)象方法示例 運(yùn)用映射機(jī)制創(chuàng)建對(duì)象

    本示例核心技術(shù)是運(yùn)用.NET動(dòng)態(tài)編譯技術(shù)+.NET映射技術(shù),把一個(gè)代碼塊中的代碼,動(dòng)態(tài)編譯成程序集后,在運(yùn)用映射機(jī)制,創(chuàng)建對(duì)象示例,調(diào)用對(duì)象方法
    2014-01-01
  • C#權(quán)限管理和設(shè)計(jì)淺談

    C#權(quán)限管理和設(shè)計(jì)淺談

    權(quán)限管理是很多軟件中相當(dāng)重要的一個(gè)模塊——它的設(shè)計(jì)的好壞直接影響到軟件的安全性、權(quán)限管理的可擴(kuò)展性和易操作性 以及代碼中權(quán)限判斷的復(fù)雜程度和效率等方面
    2012-02-02
  • C#泛型類型知識(shí)講解

    C#泛型類型知識(shí)講解

    這篇文章主要介紹了C#泛型類型知識(shí),文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06

最新評(píng)論

财经| 西平县| 玉山县| 文化| 北川| 辽宁省| 甘南县| 邵阳县| 大关县| 梁平县| 体育| 焦作市| 延庆县| 清镇市| 景德镇市| 盘锦市| 噶尔县| 增城市| 济宁市| 荃湾区| 清水县| 南川市| 民权县| 日喀则市| 奉新县| 穆棱市| 抚顺市| 东安县| 衢州市| 新龙县| 库车县| 北海市| 本溪市| 晋江市| 保康县| 武定县| 陵水| 邢台县| 无锡市| 墨竹工卡县| 桑植县|