在C#中使用官方驅動操作MongoDB

來源:互聯網
上載者:User
在C#中使用官方驅動操作MongoDB

 8.1)下載安裝

 想要在C#中使用MongoDB,首先得要有個MongoDB支援的C#版的驅動。C#版的驅動有很多種,如官方提供的,samus。 實現思路大都類似。這裡我們先用官方提供的mongo-csharp-driver ,目前的版本為1.4.1

下載地址:http://github.com/mongodb/mongo-csharp-driver/downloads

編譯之後得到兩個dll

 MongoDB.Driver.dll:顧名思義,驅動程式

 MongoDB.Bson.dll:序列化、Json相關

 然後在我們的程式中引用這兩個dll。

 下面的部分簡單示範了怎樣使用C#對MongoDB進行增刪改查操作。

 8.2)串連資料庫:

 在串連資料庫之前請先確認您的MongoDB已經開啟了。

//資料庫連接字串 const string strconn = "mongodb://127.0.0.1:27017"; //資料庫名稱 const string dbName = "cnblogs";//建立資料庫連結 MongoServer server = MongoDB.Driver.MongoServer.Create(strconn); //獲得資料庫cnblogs MongoDatabase db = server.GetDatabase(dbName);

8.3)插入資料:

好了資料開啟了,現在得添加資料了,我們要添加一條User“記錄”到 Users集合中。

在MongoDB中沒有表的概念,所以在插入資料之前不需要建立表。

但我們得定義好要插入的資料的模型Users

Users.cs:    public class Users    {        public ObjectId _id;//BsonType.ObjectId 這個對應了 MongoDB.Bson.ObjectId      public string Name { get; set; }        public string Sex { set; get; }    }

_id 屬性必須要有,否則在更新資料時會報錯:“Element '_id' does not match any field or property of class”。

 好,現在看看添加資料的代碼怎麼寫:

public void Insert(){    //建立資料庫連結 MongoServer server = MongoDB.Driver.MongoServer.Create(strconn);    //獲得資料庫cnblogs MongoDatabase db = server.GetDatabase(dbName);    Users users = new Users();    users.Name = "xumingxiang";    users.Sex = "man";    //獲得Users集合,如果資料庫中沒有,先建立一個 MongoCollection col = db.GetCollection("Users");    //執行插入操作 col.Insert<Users>(users);}

8.4)更新資料

public void Update(){    //建立資料庫連結 MongoServer server = MongoDB.Driver.MongoServer.Create(strconn);    //獲得資料庫cnblogs MongoDatabase db = server.GetDatabase(dbName);    //擷取Users集合 MongoCollection col = db.GetCollection("Users");    //定義擷取“Name”值為“xumingxiang”的查詢條件 var query = new QueryDocument { { "Name", "xumingxiang" } };    //定義更新文檔 var update = new UpdateDocument { { "$set", new QueryDocument { { "Sex", "wowen" } } } };    //執行更新操作 col.Update(query, update);}

8.5)刪除資料

public void Delete(){    //建立資料庫連結 MongoServer server = MongoDB.Driver.MongoServer.Create(strconn);    //獲得資料庫cnblogs MongoDatabase db = server.GetDatabase(dbName);    //擷取Users集合 MongoCollection col = db.GetCollection("Users");    //定義擷取“Name”值為“xumingxiang”的查詢條件 var query = new QueryDocument { { "Name", "xumingxiang" } };    //執行刪除操作 col.Remove(query);}

8.6)查詢資料

public void Query(){    //建立資料庫連結 MongoServer server = MongoDB.Driver.MongoServer.Create(strconn);    //獲得資料庫cnblogs MongoDatabase db = server.GetDatabase(dbName);    //擷取Users集合 MongoCollection col = db.GetCollection("Users");    //定義擷取“Name”值為“xumingxiang”的查詢條件 var query = new QueryDocument { { "Name", "xumingxiang" } };              //查詢全部集合裡的資料 var result1 = col.FindAllAs<Users>();    //查詢指定查詢條件的第一條資料,查詢條件可預設。 var result2 = col.FindOneAs<Users>();    //查詢指定查詢條件的全部資料 var result3 = col.FindAs<Users>(query);}







MongoDb在C#中使用


using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.Serialization;using System.Data;using System.Data.SqlClient;using MongoDB.Bson;using MongoDB.Driver;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            //串連資訊            string conn = "mongodb://localhost";            string database = "demoBase";            string collection = "demoCollection";            MongoServer mongodb = MongoServer.Create(conn);//串連資料庫            MongoDatabase mongoDataBase = mongodb.GetDatabase(database);//選擇資料庫名            MongoCollection mongoCollection = mongoDataBase.GetCollection(collection);//選擇集合,相當於表            mongodb.Connect();            //普通插入            var o = new { Uid = 123, Name = "xixiNormal", PassWord = "111111" };            mongoCollection.Insert(o);            //對象插入            Person p = new Person { Uid = 124, Name = "xixiObject", PassWord = "222222" };            mongoCollection.Insert(p);            //BsonDocument 插入            BsonDocument b = new BsonDocument();            b.Add("Uid", 125);            b.Add("Name", "xixiBson");            b.Add("PassWord", "333333");            mongoCollection.Insert(b);            Console.ReadLine();        }    }    class Person {        public int Uid;        public string Name;        public string PassWord;    }}

結果:

都是上述配置寫的,程式會自動建立對應的庫和集合。

下面的操作不上完整代碼了:

            /*---------------------------------------------             * sql : SELECT * FROM table              *---------------------------------------------             */            MongoCursor<Person> p = mongoCollection.FindAllAs<Person>();            /*---------------------------------------------             * sql : SELECT * FROM table WHERE Uid > 10 AND Uid < 20             *---------------------------------------------             */            QueryDocument query = new QueryDocument();            BsonDocument b = new BsonDocument();            b.Add("$gt", 10);            b.Add("$lt", 20);            query.Add("Uid", b);            MongoCursor<Person> m = mongoCollection.FindAs<Person>(query);            /*-----------------------------------------------             * sql : SELECT COUNT(*) FROM table WHERE Uid > 10 AND Uid < 20             *-----------------------------------------------             */            long c = mongoCollection.Count(query);            /*-----------------------------------------------            * sql : SELECT Name FROM table WHERE Uid > 10 AND Uid < 20            *-----------------------------------------------            */            QueryDocument query = new QueryDocument();            BsonDocument b = new BsonDocument();            b.Add("$gt", 10);            b.Add("$lt", 20);            query.Add("Uid", b);            FieldsDocument f = new FieldsDocument();            f.Add("Name", 1);            MongoCursor<Person> m = mongoCollection.FindAs<Person>(query).SetFields(f);            /*-----------------------------------------------            * sql : SELECT * FROM table ORDER BY Uid DESC LIMIT 10,10            *-----------------------------------------------            */            QueryDocument query = new QueryDocument();            SortByDocument s = new SortByDocument();            s.Add("Uid", -1);//-1=DESC            MongoCursor<Person> m = mongoCollection.FindAllAs<Person>().SetSortOrder(s).SetSkip(10).SetLimit(10);








在C#中使用samus驅動操作MongoDB

再來介紹一款第三方驅動samus,這是一款使用使用較多的驅動,更新頻率比較快,samus驅動除了支援一般形式的操作之外,還支援Linq 和Lambda 運算式。

下載地址:https://github.com/samus/mongodb-csharp

下載回來編譯得到兩個dll

MongoDB.dll          驅動的主要程式

MongoDB.GridFS.dll    用於儲存大檔案。

這裡我們引用MongoDB.dll  即可。關於MongoDB.GridFS.dll 本文用不到,暫不介紹,無視它。

其串連資料庫以及CRUD操作如下:

//資料庫連接字串const string strconn = "mongodb://127.0.0.1:27017";//資料庫名稱const string dbName = "cnblogs";//定義資料庫MongoDatabase db;/// <summary>/// 開啟資料庫連結/// </summary>public void GetConnection(){    //定義Mongo服務 Mongo mongo = new Mongo(strconn);    //開啟串連 mongo.Connect();    //獲得資料庫cnblogs,若不存在則自動建立 db = mongo.GetDatabase(dbName) as MongoDatabase;}/// <summary>/// 添加資料/// </summary>public void Insert(){    var col = db.GetCollection<Users>();    //或者     //var col = db.GetCollection("Users");    Users users = new Users();    users.Name = "xumingxiang";    users.Sex = "man";    col.Insert(users);}/// <summary>/// 更新資料/// </summary>public void Update(){    var col = db.GetCollection<Users>();    //查出Name值為xumingxiang的第一條記錄 Users users = col.FindOne(x => x.Name == "xumingxiang");    //或者       //Users users = col.FindOne(new Document { { "Name", "xumingxiang" } }); users.Sex = "women";    col.Update(users, x => x.Sex == "man");}/// <summary>/// 刪除資料/// </summary>public void Delete(){    var col = db.GetCollection<Users>();    col.Remove(x => x.Sex == "man");    ////或者    ////查出Name值為xumingxiang的第一條記錄 //Users users = col.FindOne(x => x.Sex == "man");    //col.Remove(users);}/// <summary>/// 查詢資料/// </summary>public void Query(){    var col = db.GetCollection<Users>();    var query = new Document { { "Name", "xumingxiang" } };    //查詢指定查詢條件的全部資料 var result1 = col.Find(query);    //查詢指定查詢條件的第一條資料 var result2 = col.FindOne(query);    //查詢全部集合裡的資料 var result3 = col.FindAll();}




QueryDocument 的常用查詢: [csharp] view plain copy /*---------------------------------------------              * sql : SELECT * FROM table WHERE ConfigID > 5 AND ObjID = 1             *---------------------------------------------               */               QueryDocument query = new QueryDocument();               BsonDocument b = new BsonDocument();               b.Add("$gt", 5);                          query.Add("ConfigID", b);   query.Add("ObjID", 1);   MongoCursor<Person> m = mongoCollection.FindAs<Person>(query);      /*---------------------------------------------              * sql : SELECT * FROM table WHERE ConfigID > 5 AND ConfigID < 10             *---------------------------------------------               */               QueryDocument query = new QueryDocument();               BsonDocument b = new BsonDocument();               b.Add("$gt", 5);      b.Add("$lt", 10);                    query.Add("ConfigID", b);   MongoCursor<Person> m = mongoCollection.FindAs<Person>(query); 



 1       public   class  News
 2      {
 3           public   int  _id {  get ;  set ; }
&n

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.