2016-07-20 10 views
2

最新のMongoDB C#ドライバを使用していますが、私の質問に問題があります。私はMongoの文書内のフィールドを更新し、この文書をIDフィールドで識別しようとしています。私は他のフィールドに基づいてドキュメントをフィルタリングする同様のクエリを書いていますが、idフィールドではうまく動作しません。Mongo DB C#ドライバを使用してIDフィールドで文書を更新

マイクエリ:

public static async Task<bool> Delete(string Guid) 
{ 
var database = new MongoDB(); 
var thingsCollection = database.Things; 
var builder = Builders<ThingsModel>.Filter; 
var filter = builder.Eq("_id", Guid); 
var update = Builders<ThingsModel>.Update 
    .Set("IsActive", false); 
var updateResult = await thingsCollection.UpdateOneAsync(filter, update); 
return true;   
} 

私は真のたびに戻っています実現が、それはテストのためだけの存在です。 Mongoから戻ってきたupdateResultオブジェクトは、Guidを持つItemsCollection内のものがパラメータとして渡されたにもかかわらず、一致するものが見つかりませんでした。私はまた、次のようにコレクションにIDフィールドするのGuidプロパティをマークしている:

[BsonId] 
public Guid Guid { get; set; } 

また、私は私が一度に悪い習慣が、1つの事、それのように他の何かにのGuidから名前を変更する必要があります知っています: )私はどんな助けにも感謝します!

答えて

1

名前に問題がある可能性があります。

使用linqu構文我々は(_idは、idフィールドとして使用されている)、これを持つことができます

var update = Builders<ThingsModel>.Update.Set(a => a.IsActive, false); 
var result = _collection.UpdateOne(model => model._id == _id, update); 

full code here

関連する問題