2012-10-01 2 views
2

у меня есть этот код для удаления элемента froma в mongofb сверкиMongoDB C# Удалить не работает

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() retrive правильной коллекции, я протестировал его шириной отладки. В коллекции есть элемент, который я хочу удалить, он имеет тот же идентификатор, который я получил в первой строке.

предприятие имеет несколько полей и ObjectId поданной под названием «Id»

+2

Что происходит? «Не работает» недостаточно. – nalply

ответ

1

Ваш finded переменная не должна быть null если .find() вернулся что-то из вашей базы данных. То, что это null, означает, что вы ничего не нашли, и поэтому ничего не нужно удалять.

Как это выглядит, происходит то, что вы запрашиваете _id для ObjectId, в то время как вы храните этот ObjectId в базе данных как Id.

6

Тип объекта _id, который вы создали, является классом ObjectId, и вы пытаетесь приравнять строку, чтобы его не удалось удалить. использование

var queryId = new ObjectId (id);

Смежные вопросы