.NET 應用如何連接到 MongoDB 數據庫

jopen 11年前發布 | 16K 次閱讀 MongoDB NoSQL數據庫

.NET 應用如何連接到 MongoDB 數據庫

引言

這則小竅門將講述如何開發一個.NET應用來連接Mongo數據庫并執行多種操作。同時還稍微涉及了Mongo數據庫和多種命令。

使用代碼

讓我們從Mongo數據庫的一些細節和基本命令開始,并最終介紹如何創建一個可連接至Mongo數據庫的.NET Windows應用。

Mongo數據庫

MongoDB 是一個跨平臺、文檔導向的數據庫系統,它被歸類為“NoSQL”數據庫。MongoDB避開了傳統的基于表的關系數據庫結構,而是使用了帶動態模式的類JSON文檔。MongoDB將這種格式稱為BSON(二進制JSON)。這種動態模式使得特定類型應用中的數據整合更簡單、更快速。MongoDB是自由且開源的軟件。

Mongo數據庫的特性

  • Ad hoc 查詢
  • 標引
  • 復制
  • 負載均衡
  • 文件存貯
  • 聚合
  • 服務器端 JavaScript 執行
  • 定容集合
  • </ul>

    用戶可從 此處 下載Mongo數據庫,然后將其中內容解壓至任一文件夾。 文件下載完成后,用戶需要配置MongoDB的數據文件夾。做法是在“C:\Data”文件夾下創建一個名為“DB”的文件夾。
    .NET 應用如何連接到 MongoDB 數據庫

    數據文件夾創建好以后,可以通過用命令行提示符在“bin”文件夾下運行“mongod.exe”來啟動Mongo數據庫。

    .NET 應用如何連接到 MongoDB 數據庫

    現在數據庫已經啟動,并正在運行。

    創建一個.NET應用

    創建一個.NET web/Windows應用。在這個示例中,我們將用一個簡單的員工表。

    開始之前,我們需要確保系統中裝有MongoDB的.NET驅動。你可以按下面的步驟來為一個指定的項目安裝驅動。

    打開Visual Studio的包管理器:

    .NET 應用如何連接到 MongoDB 數據庫

    打開包管理器控制臺后,用戶可以執行下面的命令:

    Install-Package mongocsharpdriver

    .NET 應用如何連接到 MongoDB 數據庫

    .NET 應用如何連接到 MongoDB 數據庫

    在項目中添加對下列命名空間的引用:

    using MongoDB.Bson;
    using MongoDB.Driver;
    //此外,你將頻繁的用到下面這些 using 語句中的一條或多條:
    using MongoDB.Driver.Builders;
    using MongoDB.Driver.GridFS;
    using MongoDB.Driver.Linq;

    聲明數據庫服務器和數據庫的變量:

    MongoServer _server;
    MongoDatabase _database;
    用下面的命令連接至數據庫。在這里,數據庫服務器是在本地主機上運行的,端口為:27017,數據庫名為“ anoop”。
    private void Form1_Load(object sender, EventArgs e)
    {
        string connection = "mongodb://localhost:27017";
        _server = MongoServer.Create(connection);
        _database = _server.GetDatabase("anoop", SafeMode.True);
    }
    在這里,我們創建了三個使用不同屬性集合的類。我們可以設置這些類的屬性,并將數據保存至同一個數據庫、同一個表。這是無模式數據庫的真正優勢:插入數據時不檢查模式。保存不同的記錄時可以用不同的域的集合,而其它的域 默認被視為NULL。
           public class Users1
            {
                public ObjectId Id { get; set; }
                public string Name { get; set; }
                public int Age { get; set; }
            }
            public class Users2
            {
                public ObjectId Id { get; set; }
                public string Name { get; set; }
                public string Location { get; set; }
            }
            public class Users3
            {
                public ObjectId Id { get; set; }
                public string Name { get; set; }
                public int Age { get; set; }
                public string Location { get; set; }
            }
            private void rbEntity1_CheckedChanged(object sender, EventArgs e)
            {
                txtName.Enabled = true;
                txtAge.Enabled = true;
                txtLocation.Enabled = true;
            }
            private void rbEntity2_CheckedChanged(object sender, EventArgs e)
            {
                txtName.Enabled = true;
                txtAge.Enabled = false;
                txtLocation.Enabled = true;
            }
            private void rbEntity3_CheckedChanged(object sender, EventArgs e)
            {
                txtName.Enabled = true;
                txtAge.Enabled = true;
                txtLocation.Enabled = false;
            }
            private void btnSave_Click(object sender, EventArgs e)
            {
                if (rbEntity1.Checked)
                {
                    var _users = _database.GetCollection("users");
                    var user = new Users3 { };
                    user.Age = Convert.ToInt32(txtAge.Text);
                    user.Name = txtName.Text;
                    user.Location = txtLocation.Text;
                    _users.Insert(user);
                    var id = user.Id;
                }
                else if (rbEntity2.Checked)
                {
                    var _users = _database.GetCollection("users");
                    var user = new Users2 { };
                    user.Name = txtName.Text;
                    user.Location = txtLocation.Text;
                    _users.Insert(user);
                    var id = user.Id;
                }
                else if (rbEntity3.Checked)
                {
                    var _users = _database.GetCollection("users");
                    var user = new Users1 { };
                    user.Age = Convert.ToInt32(txtAge.Text);
                    user.Name = txtName.Text;
                    _users.Insert(user);
                    var id = user.Id;
                }
                MessageBox.Show("User with name " + txtName.Text + " created");
            }
    ///下面的代碼幫助你從Mongo數據庫中查找一條現有記錄。
    _collection = _database.GetCollection("users");
    IMongoQuery query = Query.EQ("Name", "Anoop");
    Users1 _user = _collection.FindAs(query).FirstOrDefault();
    MessageBox.Show(_user.Age.ToString());
    ///下面的代碼幫助你更新Mongo數據庫中的一條現有記錄。
    _collection = _database.GetCollection("users");
    IMongoQuery query = Query.EQ("Name", "Anoop");
    Users1 _user = _collection.FindAs(query).FirstOrDefault();
    MessageBox.Show("Age before update :" + _user.Age.ToString());
    //更新年齡的值
    _user.Age = 30;

    //保存更改
    _collection.Save(_user); MessageBox.Show("Age after update :" + _user.Age.ToString());</users1></users1></pre>

    參考

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