2016-12-29 2 views
0

J'utilise le pilote Mongo U C#. Je suis capable de lire très bien à partir du MongoD (et peut supprimer en utilisant le shell Mongo).Pilote Mongo C# ne pas supprimer

Mais lorsque je tente de faire une de ces choses:

var DeleteOne = await col.DeleteOneAsync(x => (x["student_id"] == studentKey) && (x["score"] == scoreVal)); 

var DeleteTwo = await col.DeleteOneAsync(
     Builders<BsonDocument>.Filter.Eq("student_id", studentKey) 
     & Builders<BsonDocument>.Filter.Eq("score", scoreVal) 
); 

var DeleteThree = col.DeleteOne(
     Builders<BsonDocument>.Filter.Eq("student_id", studentKey) 
      & Builders<BsonDocument>.Filter.Eq("score", scoreVal) 
     ); 

Il retourne Acquittée = true, mais deleteCount = 0.

J'ai aussi essayé de supprimer le terrain _id, mais, encore une fois, il peut confirmer que le document existe, mais les suppressions ne persistent pas.

Lorsque j'utilise ce filtre exact sur une recherche, j'obtiens la ligne spécifique que je cherchais à supprimer.

+0

pourriez-vous écrire, comment est votre collection créée? Pour moi, ce "x [" student_id "]" semble un peu étrange, j'attendrais quelque chose comme x.student_id == studentKey là-bas –

Répondre

1

J'ai eu plus ou moins le même problème, mais les œuvres suivantes bien pour moi:

var myContext = new MyContext(); 
var builder = Builders<MyType>.Filter; 
var filter = builder.Eq (x => x.Id, someId); 
myContext.MyCollection.DeleteOneAsync(filter);