使用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雲端資料庫 - (三)資料查詢