MongoDBをC#から使う その3。今回はLinq。なんだけど、Linq使うのは色々準備しないとだめですね。 とりあえずソース。
//ためしドキュメント用のクラス
public class LinqTest
{
public ObjectId Id { get; set; }
public int 連番 { get; set; }
public string ボディ { get; set; }
}
public void LinqTest()
{
string connectionString = "mongodb://localhost";
MongoClient client = new MongoClient(connectionString);
var database = client.GetDatabase("foo");
var collection = database.GetCollection("LinqTest");
//ためし用コレクションの作成
List documents = new List();
for (int i = 0; i < 100; i++)
{
documents.Add(
new LinqTest{連番 = i, ボディ = i.ToString()}
);
}
collection.InsertMany(documents);
//Linqでfind
var query =
from x in collection.AsQueryable()
where x.連番 == 10
select x;
foreach (var tmp in query)
{
Console.WriteLine("{0} : {1}",tmp.連番,tmp.ボディ);
}
}
Linqで検索はもちろん便利なんだけど、動的なWhere句作ったりが割と大変。 あと、本当に出来ないとなると、割と致命的なのがBsonDocumentの検索がLinqだとできないっぽい? あんま調べてない。海外のサイトでもちらほら質問が出てるけど、どれも解決してないっぽい。 知ってる人いたら教えてください。要調査と実験。
で、Linqは便利だけど、そのままだとどうしても動的な条件がやりづらい。なので、いろいろ準備してあげる必要あり。それはまた今度。次は性能面を見る。