2

私はmongob照合からアイテムを削除するためのこのコードを持っています

private MongoCollection<T> GetCollection()
    {
       connectionString = "mongodb://localhost/?safe=true";
       server = MongoServer.Create(connectionString);
       database = server.GetDatabase("CSCatalog"); 

        return database.GetCollection<T>("myCollectionName");
    }
public bool  Delete(T entity)
    {            
        var id = typeof(T).GetProperty("Id").GetValue(entity,null).ToString();            
        var query = Query.EQ("_id",id);
        var finded = GetCollection().Find(query); // return null
        var result= GetCollection().Remove(query, MongoDB.Driver.RemoveFlags.Single);  // no errors, but don't remove 

        return esito.Ok; //return true but donn't remove.


    }

GetCollection() メソッドは正しいコレクションを取得します。デバッグ幅でテストしました。コレクションには、削除したいアイテムがあり、最初の行で取得したのと同じ ID を持っています。

エンティティにはいくつかのフィールドと「Id」と呼ばれる Objectid フィールドがあります

4

2 に答える 2

1

がデータベースから何かを返した場合、finded変数はそうであってはなりません。null であるということは、何も見つからなかったことを意味し、したがって何も削除されません。null.find()

ここで起こっているように見えるのは_id、ObjectId をクエリしているときに、その ObjectId をデータベースに として格納しているということですId

于 2012-10-02T05:15:10.660 に答える