NoRMはMongoDBのラッパーとして動作する.NETライブラリだ。MongoDBに対する.NETプログラムの処理を取り扱う。強い型のインターフェイス、LINQのサポート、NETとMono双方をサポートしているのが特徴だ。
主な特徴は、
- Providing a strongly-typed interface to MongoDBに対する強い型を持ったインターフェイスの提供。
- MongoDBのほとんどのコマンドをサポート。
- LINQ-to-MongoDBのサポート。
- .NETとMono双方で利用できる。
- BSONと.NET CLRタイプとの双方向のシリアライゼイション。BSONはMongoDBが使うJSONドキュメントをバイナリエンコードした形式だ。
NoRMの使用例(ウィキから引用)は、
//接続文字列はデータベースへのURI。必要な資格情報も含む。 var coll = (new Mongo(connString)).GetCollection<Product>(); //コレクション追加するために新しいオブジェクトを作成。 var obj = new Product(); obj._id = ObjectId.NewObjectID(); obj.Title = "Shoes"; //オブジェクトを保存 coll.Insert(obj); //オブジェクトを検索。 var obj2 = coll.FindOne(new { _id = obj._id}).First();
MongoDB用のもうひとつの.NETプロバイダはMongoDB-CSharpだ。作者のSteve Wagner氏によれば、MongoDB-CSharpは.NET/WindowsとMono 2.0/Ubuntuでテスト済みだ。
Raven DBは.NETに特化したもうひとつのドキュメントデータベースだ。Raven DBがリリースされたとき、InfoQでも取り上げた。MongoDBとは違い、GNU AGPL v3.0の下で公開されている。Raven DBはオープンソースプロジェクトでは無料で利用できるが、商用製品では有料ライセンスを利用する必要がある。