MongoDB的C#驅(qū)動(dòng)程序教程(譯)

草案版本(日期為2010-09-30) 該文件是一個(gè)草案版本。雖然我們認(rèn)為這里提供的信息是非常準(zhǔn)確的,它是可能的,它可能會(huì)改變未成年人的方式,因?yàn)槲覀兾沼脩舻姆答佉庖?jiàn),并繼續(xù)執(zhí)行 C#驅(qū)動(dòng)程序。 1.概述 本教程是10gen支持C#驅(qū)動(dòng)程序mongodb的介紹。假定

草案版本(日期為2010-09-30)

該文件是一個(gè)草案版本。雖然我們認(rèn)為這里提供的信息是非常準(zhǔn)確的,香港虛擬主機(jī),它是可能的,它可能會(huì)改變未成年人的方式,因?yàn)槲覀兾沼脩舻姆答佉庖?jiàn),并繼續(xù)執(zhí)行 c#驅(qū)動(dòng)程序。

1.概述

本教程是10gen支持C#驅(qū)動(dòng)程序MongoDB的介紹。假定您熟悉使用MongoDB,因此主要集中在如何使用C#訪問(wèn)MongoDB的。 它分為兩個(gè)部分:C# 驅(qū)動(dòng)程序 ,BSON圖書(shū)館。C#驅(qū)動(dòng)程序是建立在頂部,其目的是單獨(dú)使用的C#驅(qū)動(dòng)程序的的BSON圖書(shū)館,。

在第1部分中,我們將介紹C#驅(qū)動(dòng)程序的主類:MongoServer,MongoDatabase,MongoCollection,MongoCursor,MongoGridFS,MongoGridFSFileInfo和SafeMode。

在第2部分,我們將討論的主要類的BSON Library的:BsonType,BsonValue(及其子類),BsonElement,BsonDocument和BsonArray。

第1部分:C#驅(qū)動(dòng)程序

本教程的第1部分組織自頂向下的方式,所以你有時(shí)可能提前偷看,如果事情是沒(méi)有意義。您甚至可能想要讀第2,如果你是完全陌生的的BSON概念,如文檔和元素與前第1部分。

參考文獻(xiàn)和命名空間

為了從你的程序中使用C#的驅(qū)動(dòng)程序,您必須添加以下兩個(gè)DLL文件:

  • MongoDB.BsonLibrary.dll
  • MongoDB.CSharpDriver.dll
  • 您還應(yīng)該添加以下語(yǔ)句到你的源文件:

    using MongoDB.BsonLibrary;

    using MongoDB.CSharpDriver;

    ?

    除了 極少數(shù)例外,你將要使用的類的名稱前綴與任何“BSON”的,如果他們的BsonLibrary或“Mongo”的一部分,如果他們的C#驅(qū)動(dòng)程序的一部分 。這樣做是為了獲得名稱沖突的可能性降至最低,當(dāng)您添加到你的程序的兩個(gè)使用語(yǔ)句。預(yù)計(jì)將方法的參數(shù)(主要是枚舉和標(biāo)志)的一些類,具有較短的名稱,不使用任何前綴。

    我們喜歡使用C#的var語(yǔ)句聲明 的變量,因?yàn)樗鼤?huì)導(dǎo)致更短,我們的感覺(jué),更可讀的代碼。Visual Studio可以很容易地看到一個(gè)變量的類型 ,如果您需要通過(guò)將鼠標(biāo)指針懸停在變量 或使用IntelliSense。然而,當(dāng)閱讀本文檔,你沒(méi)有這個(gè)能力,所以在這個(gè)文件中,而不是寫(xiě):

    ????????????? var server = MongoServer.Create(connectionString);

    ????????????? var test = server[“test”];

    ????????????? var books = test[“books”];

    ?

    按照我們的建議,我們會(huì)來(lái)寫(xiě):

    ????????????? MongoServer server = MongoServer.Create(connectionString);

    ????????????? MongoDatabase test = server[“test”];

    ????????????? MongoCollection books = test[“books”];

    ?

    所以,你可以看到什么類型正在使用。

    線程安全

    只有少數(shù)的C#驅(qū)動(dòng)程序 類是線程安全的。其中:MongoServer的,MongoDatabase,MongoCollection MongoGridFS。通用類,你會(huì)使用很多是不是線程安全包括MongoCursor的所有類的BsonLibrary(除BsonSymbolTable)的。A類不是線程安全的,除非特別記載是線程安全的。

    所有的所有類的靜態(tài)屬性和方法是線程安全的。

    MongoServer類

    這個(gè)類服務(wù) s的工作與MongoDB的根對(duì)象。這個(gè)類的一個(gè)實(shí)例的客戶端是一個(gè)MongoDB服務(wù)器,你想溝通。雖然這個(gè)類有公共的構(gòu)造函數(shù),推薦的方式來(lái)獲得這個(gè)類的一個(gè)實(shí)例是使用工廠方法。

    每個(gè)實(shí)例MongoServer保持與服務(wù)器的連接池。這些連接之間共享所有的呼叫到服務(wù)器。你可能要調(diào)用構(gòu)造函數(shù),而不是直接調(diào)用創(chuàng)建工廠方法MongoServer的幾個(gè)原因之一是,如果你要保持一個(gè)單獨(dú)的連接池的一些操作。

    這個(gè)類的實(shí)例是線程安全的。

    連接字符串

    最簡(jiǎn)單的方法是使用一個(gè)連接字符串連接到MongoDB的。標(biāo)準(zhǔn) MongoDB的連接字符串的格式是一個(gè)以下列格式的URL:

    ????????????? mongodb://[username:password@]hostname[:port][/database]

    ?

    如果您使用的是MongoDB服務(wù)器的身份驗(yàn)證的用戶名和密碼,只應(yīng)。這些憑據(jù)將適用于一個(gè)單一的數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)名稱是存在的,否則他們將所有的數(shù)據(jù)庫(kù)的默認(rèn)憑據(jù)。要進(jìn)行身份驗(yàn)證對(duì)管理數(shù)據(jù)庫(kù)追加“(管理)”的用戶名的。

    端口號(hào)是可選的,默認(rèn)為27017。

    如果數(shù)據(jù)庫(kù)名是存在的,那么這個(gè)連接字符串,也可以與創(chuàng)建方法MongoDatabase的使用。創(chuàng)建方法MongoServer忽略的數(shù)據(jù)庫(kù)名稱(如果存在)(以外的憑據(jù),以確定是否適用于一個(gè)單一的數(shù)據(jù)庫(kù)或所有數(shù)據(jù)庫(kù)的默認(rèn)憑據(jù))。

    要連接到一個(gè)副本設(shè)置指定的種子提供多個(gè)以逗號(hào)分隔的主機(jī)名列表。例如:

    ????????????? mongodb://server1,server2:27017,server2:27018

    ?

    該連接字符串指定的種子名單,由三個(gè)服務(wù)器(其中兩個(gè)是在同一臺(tái)機(jī)器上,但在不同的端口號(hào))。

    C#驅(qū)動(dòng)程序 能夠連接到副本集,即使種子名單是不完整的。它會(huì)發(fā)現(xiàn)在主服務(wù)器即使主只要不是種子列表中的種子列表上的至少一個(gè)次級(jí)服務(wù)器響應(yīng)(響應(yīng)將包含完整副本集和當(dāng)前的主的名稱)。

    工廠方法

    最好的方式得到的一個(gè)實(shí)例MongoServer是,使用CREATE工廠方法。使用相同的連接字符串時(shí),此方法將返回相同的實(shí)例MongoServer,所以你不必?fù)?dān)心一大堆的情況下,如果你調(diào)用Create不止一次。此外,如果你只使用一個(gè)數(shù)據(jù)庫(kù)時(shí),你可能會(huì)發(fā)現(xiàn)它更容易跳過(guò)調(diào)用此方法,并呼吁建立 工廠方法MongoDatabase。

    要連接到MongoDB的本地,你會(huì)寫(xiě)這樣的代碼:

    ????????????? string connectionString = “mongodb://localhost”;

    ????????????? MongoServer server = MongoServer.Create(connectionString);

    ?

    或許……

    ????????????? MongoServer server = MongoServer.Create();

    ?

    因?yàn)檫B接到本地主機(jī)是默認(rèn)的。

    ? 版權(quán)聲明
    THE END
    喜歡就支持一下吧
    點(diǎn)贊10 分享