小卷的胡言亂語

隨心。隨興。隨喜。隨緣



使用c#連接mongodb雲端資料庫 - (二)連接資料庫與資料新增

上一篇介紹了一些基本工具,以及線上文件。
這一篇主要紀錄c#連接mongodb,以及新增資料。

1、準備


進入本篇前,請先在mlab中新增一個資料庫(db)、建立好資料表(collection)、使用者(user),並於專案中下載driver。若有疑問可見上一篇內容。

  • 本系列文使用的MongoDB.Driver版本為2.5。
  • 本系列文所使用之名稱(皆為mongodb詞彙用法)及對應關聯式資料庫名稱如下:db - database、collection - table、document(s) - data record。
  • 範例db名稱:testmean
  • 範例collection名稱:categories、products
  • 本系列範例僅紀錄同步,若有使用非同步需求,請見官方手冊說明

2、加入專案參考


在你的專案>參考上,按下右鍵,找到[加入參考],點按後加入以下參考:

  • MongoDB.Bson
  • MongoDB.Driver
  • MongoDB.Driver.Core
  • MongoDB.Driver.Legacy

3、加入命名空間


using MongoDB.Bson;  
using MongoDB.Bson.Serialization;  
using MongoDB.Driver;  
using MongoDB.Driver.Builders;  
using MongoDB.Driver.Linq;   

4、連接mongodb


PS.傻露的專案是MVC,故寫在controller內

public class TestMongoDBController : Controller  
{  
    private MongoClient dbconn;  
    private IMongoDatabase db;   
    private string mlabconn = "mongodb://mlab連線字串";  //mlab提供的連線字串  
    public TestMongoDBController()  
    {              
        this.dbconn = new MongoClient(mlabconn);   //設立連線  
        this.db = dbconn.GetDatabase("testmean");  //資料庫名稱         
    }  
}  

5、新增資料


新增單筆資料

private void InsertOne()  
{  
    var coll = db.GetCollection<BsonDocument>("categories");  //指定寫入給"categories"此collection  
    coll.InsertOne(new BsonDocument { {"name" , "cabintest"} }); //新增一筆document,屬性name之值 = "cabintest"  
}  

若給定的值為數值型態,直接給值即可:

coll.InsertOne(new BsonDocument { {"price" , 100} });  

新增單筆資料(多欄位)

如果有一組以上的欄位時:

coll.InsertOne(new BsonDocument { {"name" , "cabintest"},{"price" , 100} });  

亦可利用Dictionary:

Dictionary<string, object> data = new Dictionary<string, object>();  
data.Add("name", "cabintest");  
data.Add("price",100);  
coll.InsertOne(new BsonDocument(data));  

新增多筆資料

實務上經常遇到寫入資料庫的資料是一個群集,比如訂單明細(如:本次購物買了3本書),
因此在這裡我們首先定義物件

[BsonIgnoreExtraElements]  
public class Category  
{      
    [BsonId]  
    public ObjectId Id { get; set; }  
    
    [BsonElement("name")]  
    public string name { get; set; }  
}  

[BsonIgnoreExtraElements]:告訴mongodb我們定義的物件與mongodb內的物件定義不同
[BsonId]:在MongoDB中所有Document都必須有一個_id欄位(有點類似關聯式資料表中的p.k.),這裡我們使用一個比較特別的型態-ObjectId,而指定為[BsonId]的用意是在新增資料時,_id此欄位請mongodb幫我們取號。
[BsonElement(“name”)]:代表此欄位等同於mongodb中的”name”欄位

建好了物件後,我們就可以新增資料:

private void InsertList()  
{
    var coll = db.GetCollection<Category>("categories");  //指定寫入給"categories"此collection,但我們的資料型態是Category  
    List<Category> data = new List<Category>();  
    data.Add(new Category { name = "cabin1" });  
    data.Add(new Category { name = "cabin2" });  
    data.Add(new Category { name = "cabin3" });  
    data.Add(new Category { name = "cabin4" });  
    data.Add(new Category { name = "cabin5" });  

    coll.InsertMany(data);  
}

以上簡單介紹了如何新增資料,下一篇將介紹如何查詢資料。

相關文章:
使用c#連接mongodb雲端資料庫 - (一)簡介
使用c#連接mongodb雲端資料庫 - (三)資料查詢