草案版本(日期為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文件:
您還應(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
?
所以,你可以看到什么類型正在使用。
線程安全
只有少數(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)的。