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

6

您创建的 _id 类型是 ObjectId 类,并且您试图将其等同于字符串,因此它无法删除。利用

var queryId = new ObjectId(id);

于 2013-01-28T14:18:28.697 回答
1

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

这里发生的情况是您正在查询_idObjectId,同时将该 ObjectId 存储在数据库中为Id.

于 2012-10-02T05:15:10.660 回答