標籤:
開始:
先下載個C#的驅動。MongoDB提供各種主流與非主流預言的開發驅動。
C# Driver :猛擊這裡
CSharp Driver Tutorial:猛擊這裡
下載檔案安裝或者解壓縮包
如果您是安裝,請到安裝位置尋找,如果是ZIP壓縮包,解壓縮包得到如下兩個檔案:
- MongoDB.Bson.dll :序列化、Json相關
- MongoDB.Driver.dll :我們的驅動
沒了,只有這兩個檔案是我們的最愛。
繼續:
建立一個C#的項目,不管你是vs2008,還是vs2010,也許您手中有vs2012?也發給我一份吧。感謝共用:)
添加引用,將上面兩個DLL引入到項目裡面
您啟動Mongod.exe了嗎?啟動服務。
代碼裡面添加命名空間:
using MongoDB.Bson;
using MongoDB.Driver;
跟著[CSharp Driver Tutorial:猛擊這裡]繼續做。如果您沒有開啟[CSharp Driver Tutorial]就不要開了,看完全文再看,以免分散精力。
// MongoDB串連串,以[mongodb: // ]開頭。這裡,我們串連的是原生服務
string connectionString = " mongodb://localhost " ;
// 串連到一個MongoServer上
MongoServer server = MongoServer.Create(connectionString);
- MongoDb的串連串
- 在串連串中,我們可以指定其他機器上的服務和串連連接埠格式如下:
- mongodb://[username:[email protected]]hostname[:port][/[database][?options]]
- 簡單樣本:mongodb://server1,server2:27017,server2:27018
- 更進一步詳細的資訊請查看[CSharp Driver Tutorial:猛擊這裡]
- MongoServer
- 有幾種不同的重載了的建立方式:
- MongoServer Create() 如果只是串連本機,並且本機只啟動了一個服務,直接調用這個方法,完全不需要串連串
- MongoServer Create(MongoConnectionStringBuilder builder)
- MongoServer Create(MongoUrl url)
- MongoServer Create(string connectionString)
- MongoServer Create(Uri uri)
- 更進一步詳細的資訊請查看[CSharp Driver Tutorial:猛擊這裡]
繼續:
再增加幾行代碼:
// MongoDB串連串,以[mongodb: // ]開頭。這裡,我們串連的是原生服務
string connectionString = " mongodb://localhost " ;
// 串連到一個MongoServer上
MongoServer server = MongoServer.Create(connectionString);
// -------------------------------------------------------------------------
// 開啟資料庫testdb
MongoDatabase db = server.GetDatabase( " testdb " );
// 擷取集合employees
MongoCollection collection = db.GetCollection( " employees " );
- server.GetDatabase("testdb")
- 開啟資料庫:testdb
- 我沒有testdb庫啊??不要擔心,不要疑惑,不要在這個問題上浪費時間,如果沒有這個庫存在,MongoDB會自動替你建立它的
- db.GetCollection("employees")
- 擷取集合:employees
- 好吧有了前一個教訓,管他呢,愛存在不存在,MongoDB的開發人員都會替我們建立吧?
繼續:
// MongoDB串連串,以[mongodb: // ]開頭。這裡,我們串連的是原生服務
string connectionString = " mongodb://localhost " ;
// 串連到一個MongoServer上
MongoServer server = MongoServer.Create(connectionString);
// -------------------------------------------------------------------------
// 開啟資料庫testdb
MongoDatabase db = server.GetDatabase( " testdb " );
// 擷取集合employees
MongoCollection collection = db.GetCollection( " employees " );// -------------------------------------------------------------------------
// 建立一個employee
BsonDocument employee = new BsonDocument
{
{ " name " , " Ernest Hemingway " },
{ " title " , " For Whom the Bell Tolls " }
};
// 把它寫到上面那個集合裡面去
collection.Insert(employee);
如果您的程式沒有拋出任何異常,那麼資料已經進去了。不知到BsonDocument是個啥東西?
看個簡單的例子吧:
BsonDocument document = new BsonDocument {
{ "name", name },
{ "city", city }, // not added if city is null
{ "dob", dob, dobAvailable } // not added if dobAvailable is false
};
它以索引值對的方式、JSON的格式,儲存資料。MongoDB通過BsonDocument套BsonDocument的方式,使您可以儲存複雜格式的資料。
- 有一些重要的概念,看完文章以後,你一定要去過一遍:BsonType、BsonValue、BsonElement、BsonDocument、MongoServer、MongoDatabase、MongoCollection
- 在這裡: [CSharp Driver Tutorial:猛擊這裡]
繼續:
最後幾行小代碼:
// -------------------------------------------------------------------------
// 查詢上面那個剛剛插進去的資料,就這格式了,看看QueryDocument的文檔吧
var query = new QueryDocument( " name " , " Ernest Hemingway " );
// 遍曆結果
foreach (BsonDocument emp in collection.Find(query))
{
// BsonValue有兩種取值方式,下面兩個都用了一個是AsXXX,一個是ToXXX
Console.WriteLine( " name:{0}\ttitle:{1} " , emp[ " name " ].AsString, emp[ " title " ].ToString());
}
- QueryDocument
- MongoCollection books;
var query = Query.And(
Query.EQ( "author", "Kurt Vonnegut"),
Query.EQ( "title", "Cats Craddle")
);
- 不解釋了,查詢的各種細節用法看各種文檔吧(因為我還沒看呢,解釋不了,呵呵)。作為第一步,這裡知道有這個東西,量和細節的積累在不斷的實踐中獲得。[CSharp Driver Tutorial:猛擊這裡]
- BsonValue 的取值
- emp["name"].AsString 這是第一種取值方式。相關的有AsInt32,AsBoolean等等
- emp["title"].ToString() 這是第二種取值方式。相關的有ToInt32,ToBoolean等等
- 請注意細節:
- AsXXX取值方式,如果類型不一致,可以拋出異常InvalidCastException
- ToXXX取值方式,不會拋出異常,會返回預設值。[CSharp Driver Tutorial:猛擊這裡]
至此,已經完成第一次C#程式訪問MongoDB的全過程。
PS:重要概念:
BsonType、BsonValue、BsonElement、BsonDocument、MongoServer、MongoDatabase、MongoCollection
一定要看。[CSharp Driver Tutorial:猛擊這裡]
C#訪問MongoDB資料