草案版本(日期為2010-09-30) 該文件是一個草案版本。雖然我們認為這里提供的信息是非常準確的,它是可能的,它可能會改變未成年人的方式,因為我們吸收用戶的反饋意見,并繼續執行 C#驅動程序。 1.概述 本教程是10gen支持C#驅動程序mongodb的介紹。假定
草案版本(日期為2010-09-30)
該文件是一個草案版本。雖然我們認為這里提供的信息是非常準確的,香港虛擬主機,它是可能的,它可能會改變未成年人的方式,因為我們吸收用戶的反饋意見,并繼續執行 c#驅動程序。
1.概述
本教程是10gen支持C#驅動程序MongoDB的介紹。假定您熟悉使用MongoDB,因此主要集中在如何使用C#訪問MongoDB的。 它分為兩個部分:C# 驅動程序 ,BSON圖書館。C#驅動程序是建立在頂部,其目的是單獨使用的C#驅動程序的的BSON圖書館,。
在第1部分中,我們將介紹C#驅動程序的主類:MongoServer,MongoDatabase,MongoCollection,MongoCursor,MongoGridFS,MongoGridFSFileInfo和SafeMode。
在第2部分,我們將討論的主要類的BSON Library的:BsonType,BsonValue(及其子類),BsonElement,BsonDocument和BsonArray。
第1部分:C#驅動程序
本教程的第1部分組織自頂向下的方式,所以你有時可能提前偷看,如果事情是沒有意義。您甚至可能想要讀第2,如果你是完全陌生的的BSON概念,如文檔和元素與前第1部分。
參考文獻和命名空間
為了從你的程序中使用C#的驅動程序,您必須添加以下兩個DLL文件:
您還應該添加以下語句到你的源文件:
using MongoDB.BsonLibrary;
using MongoDB.CSharpDriver;
?
除了 極少數例外,你將要使用的類的名稱前綴與任何“BSON”的,如果他們的BsonLibrary或“Mongo”的一部分,如果他們的C#驅動程序的一部分 。這樣做是為了獲得名稱沖突的可能性降至最低,當您添加到你的程序的兩個使用語句。預計將方法的參數(主要是枚舉和標志)的一些類,具有較短的名稱,不使用任何前綴。
我們喜歡使用C#的var語句聲明 的變量,因為它會導致更短,我們的感覺,更可讀的代碼。Visual Studio可以很容易地看到一個變量的類型 ,如果您需要通過將鼠標指針懸停在變量 或使用IntelliSense。然而,當閱讀本文檔,你沒有這個能力,所以在這個文件中,而不是寫:
????????????? var server = MongoServer.Create(connectionString);
????????????? var test = server[“test”];
????????????? var books = test[“books”];
?
按照我們的建議,我們會來寫:
????????????? MongoServer server = MongoServer.Create(connectionString);
????????????? MongoDatabase test = server[“test”];
????????????? MongoCollection
?
所以,你可以看到什么類型正在使用。
線程安全
只有少數的C#驅動程序 類是線程安全的。其中:MongoServer的,MongoDatabase,MongoCollection MongoGridFS。通用類,你會使用很多是不是線程安全包括MongoCursor的所有類的BsonLibrary(除BsonSymbolTable)的。A類不是線程安全的,除非特別記載是線程安全的。
所有的所有類的靜態屬性和方法是線程安全的。
MongoServer類
這個類服務 s的工作與MongoDB的根對象。這個類的一個實例的客戶端是一個MongoDB服務器,你想溝通。雖然這個類有公共的構造函數,推薦的方式來獲得這個類的一個實例是使用工廠方法。
每個實例MongoServer保持與服務器的連接池。這些連接之間共享所有的呼叫到服務器。你可能要調用構造函數,而不是直接調用創建工廠方法MongoServer的幾個原因之一是,如果你要保持一個單獨的連接池的一些操作。
這個類的實例是線程安全的。
連接字符串
最簡單的方法是使用一個連接字符串連接到MongoDB的。標準 MongoDB的連接字符串的格式是一個以下列格式的URL:
????????????? mongodb://[username:password@]hostname[:port][/database]
?
如果您使用的是MongoDB服務器的身份驗證的用戶名和密碼,只應。這些憑據將適用于一個單一的數據庫,如果數據庫名稱是存在的,否則他們將所有的數據庫的默認憑據。要進行身份驗證對管理數據庫追加“(管理)”的用戶名的。
端口號是可選的,默認為27017。
如果數據庫名是存在的,那么這個連接字符串,也可以與創建方法MongoDatabase的使用。創建方法MongoServer忽略的數據庫名稱(如果存在)(以外的憑據,以確定是否適用于一個單一的數據庫或所有數據庫的默認憑據)。
要連接到一個副本設置指定的種子提供多個以逗號分隔的主機名列表。例如:
????????????? mongodb://server1,server2:27017,server2:27018
?
該連接字符串指定的種子名單,由三個服務器(其中兩個是在同一臺機器上,但在不同的端口號)。
C#驅動程序 能夠連接到副本集,即使種子名單是不完整的。它會發現在主服務器即使主只要不是種子列表中的種子列表上的至少一個次級服務器響應(響應將包含完整副本集和當前的主的名稱)。
工廠方法
最好的方式得到的一個實例MongoServer是,使用CREATE工廠方法。使用相同的連接字符串時,此方法將返回相同的實例MongoServer,所以你不必擔心一大堆的情況下,如果你調用Create不止一次。此外,如果你只使用一個數據庫時,你可能會發現它更容易跳過調用此方法,并呼吁建立 工廠方法MongoDatabase。
要連接到MongoDB的本地,你會寫這樣的代碼:
????????????? string connectionString = “mongodb://localhost”;
????????????? MongoServer server = MongoServer.Create(connectionString);
?
或許……
????????????? MongoServer server = MongoServer.Create();
?
因為連接到本地主機是默認的。