MongoDB C#Remove不起作用

时间:2012-10-01 09:40:18

标签: mongodb collections mongodb-.net-driver mongodb-query

我有这个代码用于从mongofb校对中删除项目

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字段

2 个答案:

答案 0 :(得分:6)

你创建的_id的类型是ObjectId类,你试图用字符串等同于它无法删除。使用

var queryId = new ObjectId(id);

答案 1 :(得分:1)

如果finded已从您的数据库返回了某些内容,则您的null变量不应为.find()。它为null意味着你没有找到任何东西,因此什么都不会被删除。

这里发生的情况是,您在_id上查询ObjectId,而您将ObjectId作为Id存储在数据库中。