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は便利だけど、そのままだとどうしても動的な条件がやりづらい。なので、いろいろ準備してあげる必要あり。それはまた今度。次は性能面を見る。