通C#訪問MongoDB數據

webphp 12年前發布 | 146K 次閱讀 MongoDB NoSQL數據庫

開始:

先下載個C#的驅動。MongoDB提供各種主流與非主流預言的開發驅動。

C# Driver 下載地址:猛擊這里

CSharp Driver Tutorial:猛擊這里

下載文件安裝或者解壓縮包

如果您是安裝,請到安裝位置尋找,如果是ZIP壓縮包,解壓縮包得到如下兩個文件:

  1. MongoDB.Bson.dll              :序列化、Json相關
  2. MongoDB.Driver.dll             :我們的驅動

沒了,只有這兩個文件是我們的最愛。

 

繼續:

新建一個C#的項目,不管你是vs2008,還是vs2010,也許您手中有vs2012?也發給我一份吧。感謝共享:)

添加引用,將上面兩個DLL引入到項目里面

通C#訪問MongoDB數據

 

您啟動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);
  1. MongoDb的連接串
    • 在連接串中,我們可以指定其他機器上的服務和連接端口格式如下:
    • mongodb://[username:password@]hostname[:port][/[database][?options]]
    • 簡單示例:mongodb://server1,server2:27017,server2:27018
    • 更進一步詳細的信息請查看[CSharp Driver Tutorial:猛擊這里]
  2. 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 " );
  1. server.GetDatabase("testdb")
    • 打開數據庫:testdb
    • 我沒有testdb庫啊??不要擔心,不要疑惑,不要在這個問題上浪費時間,如果沒有這個庫存在,MongoDB會自動替你創建它的
  2. 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());
}
  1. QueryDocument
    • MongoCollection books;
           var query = Query.And(
              Query.EQ( "author""Kurt Vonnegut"),
              Query.EQ( "title""Cats Craddle")
          );
    • 不解釋了,查詢的各種細節用法看各種文檔吧(因為我還沒看呢,解釋不了,呵呵)。作為第一步,這里知道有這個東西,量和細節的積累在不斷的實踐中獲得。[CSharp Driver Tutorial:猛擊這里]
  2. 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:猛擊這里]

 本文由用戶 webphp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!