教程:如何在.NET中使用MongoDB以及基本的CRUD操作

劉美利發表於2018-07-23

MongoDB

NoSQL是一種面向文件的資料庫系統,以特定的格式儲存,如JSON。MongoDB是當前NoSQ資料庫產品中最熱門的一種,它具高效能、易部署、易使用的特點,以及豐富的輕量級二進位制格式。 MongoDB最大的特點是支援的查詢語言非常強大,幾乎可以實現類似關聯式資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引,是一個面向集合的,模式自由的文件型資料庫。

本文將詳細介紹MongoDB的安裝、.NET應用程式中的MongoDB(C#程式碼)的使用以及演示基本的CRUD操作

MongoDB的優點

  • 方便儲存大量結構簡單的資料

  •  速度快,適用於大而複雜的資料環境

  • 在雲上有很高的靈活性和可用性

  • 很容易擴充套件

  • 使用MongoDB的動態模式,可以實現快速開發

MongoDB不會將資料儲存在行中,所有資料都儲存在單個文件中。從程式設計師的角度看,MongoDB可以處理純JSON檔案。詳見如下MongoDB文件示例:

{
   "employeeid" : ObjectId("R8rGt541b1ad7d0c4rcfgt7549"),
   "employeename" : "Tapas Pal",
   "department" : "IT",
   "numberOfArticles" : 50,
   "Address" : [
      "street" : "Some Street",
      "city" : "Kolkata",
      "country" : "India"
   ],
   "companyname" : "XYZ",
   "skills" : [".NET", "JavaScript", "NoSQL", "Node.js", "HTML"]
}

獲取MongoDB

MongoDB 是一個免費的開源資料庫,你可以從特定的連結去下載。MongoDB還提供了一個很大的驅動程式列表,方便不同程式語言與資料庫之間的通訊。如果要與.NET一起使用,則需要從NuGet包安裝驅動程式。NET驅動程式包括MongoDB.Bson,MongoDB.Driver和MongoDB.Driver.Core。

.NET專案

現在,讓我們建立一個.NET控制檯應用程式來演示MongoDB上的CRUD操作。在執行mongod.exe是要確保提示命令顯示一切正常,以便在執行控制檯應用程式時保持MongoDB伺服器正常執行。

步驟1

開啟Visual Studio並建立一個C#控制檯應用程式專案。將其命名為MongoDBConsoleApp。

圖1:新的控制檯應用程式

步驟2

安裝MongoDB.NET驅動程式。單機右鍵解決方案,進入“Manage NuGet Packages.”, 然後在搜尋欄中,輸入“MongoDB”顯示出安裝包,進行安裝。詳見下圖:

圖2:“Manage NuGet Packages”連結

圖3:包管理器輸出

步驟3

在Program.cs檔案中新增以下名稱空間,該名稱空間用於連線MongoDB和CRUD操作。

using MongoDB.Driver;
using MongoDB.Bson;

步驟4

接下來,編寫程式碼到CRUD操作。此示例中,將使用BsonDocument類物件將資料儲存在MongoDB資料庫中。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Driver;
using MongoDB.Bson;
namespace MongoDBConsoleApp
{
   class Program
   {
      static void Main(string[] args)
      {
         try
         {
            MongoClient MongodbClient = new
               MongoClient("mongodb://127.0.0.1:27017");
            // Get Database and Collection
            IMongoDatabase Mongodb =
               MongodbClient.GetDatabase("MyDatabase");
            var MongodbcollList =
               Mongodb.ListCollections().ToList();
            Console.WriteLine("The MongoDB list of collections
               are :");
            foreach (var item in MongodbcollList)
            {
               Console.WriteLine(item);
            }
            var mydocument = Mongodb.GetCollection
               <BsonDocument>("mydocument");
 
            create(Mongodb, mydocument);
            update(Mongodb, mydocument);
            delete(Mongodb, mydocument);
 
            var myresultDoc = mydocument.Find(new
               BsonDocument()).ToList();
            foreach (var myitem in myresultDoc)
            {
               Console.WriteLine(myitem.ToString());
            }
         }
         catch (Exception ex)
         {
            Console.WriteLine(ex.Message);
         }
 
         Console.ReadLine();
      }
 
      static void create(IMongoDatabase Mongodb, var mydocument)
      {
 
         BsonElement employeename = new BsonElement("employeename",
            "Tapas Pal");
         BsonDocument empployee = new BsonDocument();
         empployee.Add(employeename);
         empployee.Add(new BsonElement("employeenumber", 123));
         mydocument.InsertOne(empployee);
 
      }
 
      static void update(IMongoDatabase Mongodb, var mydocument)
      {
         // UPDATE
         BsonElement updateemployee = new
            BsonElement("employeename", "Tapas1 Pal1");
 
         BsonDocument updateemployeedoc = new BsonDocument();
         updateemployeedoc.Add(updateemployee);
         updateemployeedoc.Add(new BsonElement("employeenumber",
            1234));
 
         BsonDocument findemployeeDoc = new BsonDocument(new
            BsonElement("employeename", "Tapas Pal"));
 
         var updateDoc = mydocument.FindOneAndReplace
            (findemployeeDoc, updateemployeedoc);
 
         Console.WriteLine(updateDoc);
 
      }
      static void delete(IMongoDatabase Mongodb, var mydocument)
      {
         // DELETE
         BsonDocument findAnotheremployee = new BsonDocument(new
            BsonElement("employeename", "Tapas1 Pal1"));
 
         mydocument.FindOneAndDelete(findAnotheremployee);
      }
   }
}

在前面的程式碼方法中,作者檢索了當前的資料庫集合,然後建立了一個BsonDocument物件,用於儲存員工資料。

在create方法中,作者展示瞭如何建立一個BsonElement物件變數來儲存員工物件關鍵值,然後將該物件新增到BsonDocument中。

在update方法中,作者直接將物件作為引數傳遞,並且找到了員工名稱來更新詳細資訊。

在 delete方法中,作者刪除了之前建立的員工。

最後,顯示整個列表。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31542119/viewspace-2158330/,如需轉載,請註明出處,否則將追究法律責任。

相關文章