使用c#連接mongodb雲端資料庫 - (三)資料查詢
承上篇,本篇主要紀錄c#連接mongodb,對資料庫的查詢
- 本篇使用的MongoDB.Driver版本為2.5。
- 範例db名稱:testmean
- 範例collection名稱:categories、products
- 本範例僅紀錄同步,若有使用非同步需求,請見官方手冊說明
1、準備
請參考先前兩篇文章:
mlab註冊&下載driver:使用c#連接mongodb雲端資料庫 - (一)簡介
專案設定mongodb連線&資料新增:使用c#連接mongodb雲端資料庫 - (二)連接資料庫與資料新增
2、取得所有資料
var collection = db.GetCollection<BsonDocument>("categories"); //指定對collection"categories"操作
var documents = collection.Find(new BsonDocument()).ToList(); //取出資料轉list
3、以特定條件查詢
已知某欄位值,取出對應完整資料
var collection = db.GetCollection<BsonDocument>("categories"); //指定對collection"categories"操作
var Filter = new BsonDocument("name", "cabintest"); //設定過濾條件
var document = collection.Find(Filter).ToList(); //取出資料轉list
//var document = collection.Find(Filter).FirstOrDefault(); //or取單筆時
取得符合範圍條件資料
這裡我們先寫入數筆products資料:
(1)mongodb建立collection-products、並設定user權限
(請參考系列文:使用c#連接mongodb雲端資料庫 - (一)簡介)
(2)專案內建立物件
[BsonIgnoreExtraElements]
public class Product
{
[BsonId]
public ObjectId Id { get; set; }
[BsonElement("name")]
public string name { get; set; }
[BsonElement("price")]
public int price { get; set; }
}
(3)專案內寫入數筆products
(請參考系列文:使用c#連接mongodb雲端資料庫 - (二)連接資料庫與資料新增))
var coll = db.GetCollection<Product>("products");
List<Product> data = new List<Product>();
data.Add(new Product { name = "cabin1", price = 100 });
data.Add(new Product { name = "cabin2", price = 550 });
data.Add(new Product { name = "cabin3", price = 900 });
coll.InsertMany(data);
(4)查詢資料
string result1 = string.Empty;
var collection = db.GetCollection<BsonDocument>("products");
//one condition : price > 800
var filter1 = Builders<BsonDocument>.Filter.Gt("price", 800);
var cursor1 = collection.Find(filter1).ToCursor();
foreach (var document in cursor1.ToEnumerable())
{
//Console.WriteLine(document);
result1 += document.ToJson();
}
//price > 500 & price <900
string result2 = string.Empty;
var filterBuilder = Builders<BsonDocument>.Filter;
var filter2 = filterBuilder.Gt("price", 500) & filterBuilder.Lte("price", 900);
var cursor2 = collection.Find(filter2).ToCursor();
foreach (var document in cursor2.ToEnumerable())
{
//Console.WriteLine(document);
result2 += document.ToJson();
}
搭配LINQ語法查詢
var collection = db.GetCollection<Product>("products");
var query = collection.AsQueryable().Where(x => x.name == "cabin1").ToList();
/*var query = from p in collection.AsQueryable()
where p.name == "cabin1"
select p;
*/
下一篇紀錄資料更新~
相關文章:
使用c#連接mongodb雲端資料庫 - (一)簡介
使用c#連接mongodb雲端資料庫 - (二)連接資料庫與資料新增