2012-10-05

[C#][NoSQL] 第一次 使用 C# 操控 MongoDB 就上手 (刪除資料)

 

上一篇文章 第一次 使用 C# 操控 MongoDB 就上手 (查詢資料) 我們提到幾種比較常見的搜尋

今天我們要討論一下有關於刪除..

其實在 SQL 操作中,刪除就技術上來說本來就不難,只是要刪的乾淨還有與其他物件關聯性都要掌握好

其實就技術上來說並不困難,所以下面就簡單分為兩種..

根據系統 Id 刪除一筆資料

根據系統 Id 刪除一筆資料

看一下目前資料:

sshot-162_2

我要刪除的那筆資料 _id 為 5011175615d1b20bd8448623

這時候我就指定此 _id 為 5011175615d1b20bd8448623 將他刪除

C# Code :

//MongoDB 的 Conection URI
var connectionString = "mongodb://user1:[email protected]:35167/sampledb?safe=true";
 
// 建立連線
var server = MongoServer.Create(connectionString);
 
// 取得指定 Database
var db = server.GetDatabase("sampledb");
 
// 指定操作 Collection 為 Users 
MongoCollection<User> coll = db.GetCollection<User>("Users");
 
// 搜尋條件為 _id = 5011175615d1b20bd8448623
var query = Query.EQ("_id", new BsonObjectId("5011175615d1b20bd8448623"));
 
// 將此搜尋條件的資料進行刪除
var res = coll.Remove(query);
 
// DocumentsAffected 的目的在印出影響的資料筆數
Response.Write(res.DocumentsAffected);

結果: 1


如果再按一次 因為沒有影響到筆數 所以結果: 0


其實就三個動作 1. 建立 Query 條件 2. 執行刪除 3. 檢查影響資料


請注意: connection string 記得開為 safe=true


請注意:


如果當初你在 MongoLab 建立的是 2.2 版的..


xxxxxxx_2


可能會出現 .


sshot-163_2


如果你不是用最近版本的就可以正常執行…


當然,你可以暫時用 try catch 來解決這問題,他會正常刪除請放心,網路上看文件看起來是 Driver 還沒有修改正常..


不過這不影響,如果怕有問題,當初建立就先不要勾選 2.2 的..