IDを使用したい場合、サンプルプログラムでmongo dbからアイテムを削除しても機能しません。問題は、クラスに Id プロパティがあるが、mongo が _id を使用していることだと思いますか?
したがって、次のコードで削除をトリガーしても、何も変わりません。名前または値を使用するクエリで remove を使用すると、すべてが期待どおりに機能し、アイテムが削除されます。
ヒントはありますか?
MongoServer server = MongoServer.Create(@"mongodb://localhost/?safe=true");
server.Connect();
var db = server.GetDatabase("data");
var collection = db.GetCollection<Foo>("foo");
string id = Guid.NewGuid().ToString();
Foo a = new Foo();
a.Id = id;
a.name = "Boas";
a.Value = 1;
collection.Insert<Foo>(a);
Console.WriteLine(collection.Count()+ " items"); // Count is 1
collection.Remove(Query.EQ("_id",id));
Console.WriteLine(collection.Count() + " items"); // Count is still 1 :-( should be 0
Console.ReadLine();
追加: Find() で同じクエリを使用すると、アイテムが見つかります。そのため、find が要素を検出し、remove が要素を削除しない理由がわかりません。
collection.Find(Query.EQ("_id",id)).Count() // returns 1 element