2017-08-03 8 views
0

私はC#とMongoDBを使ってWebアプリケーションを作成しています。文書を更新するために、私はこのように見てコードを書かれている:Robomongoは文書を更新していないようです

クラスがMyTypeは、コードは基本的にすべての文書の_idとOBJの_idを比較し、この

[DataContract] 
public class MyType 
{ 
    [DataMember(Name="_id")] 
    [BsonId(IdGenerator = typeof(CombGuidGenerator))] 
    public Guid MyId { get; set; } 
    ... 
} 

のように見えます

public MyType Update(MyType obj) { 
    ... 
    var oFilter = Builders<MyType>.Filter.Eq(o => o.MyId, obj.MyId); 
    var oResult = oCollection.FindOneAndReplace(oFilter, obj); 
    if(oResult!=null) 
     Console.Writeline("object to update found"); 
    ... 
    return oResult; 
} 

コレクションを検索し、一致するものが見つかった場合は更新を実行します。プログラムはスムーズに動いているようですが、Robomongnoをチェックすると、更新対象が見つかったとしてもオブジェクトは更新されません。

+0

私はコレクションの最初のドキュメントを更新したことを知りました。 – nix86

答えて

0

FindOneAndReplaceを使用していますが、MongoDBが「単一のドキュメントを見つけて原子的に置き換える」と言っているので、最初のものを更新しています。あなたはおそらく必要なのであるとUpdateMany()ので、おそらく

public MyType Update(MyType obj) { 
     ... 
     var oFilter = Builders<MyType>.Filter.Eq(o => o.MyId, obj.MyId); 
     var oResult = oCollection.UpdateMany(
           { o.MyId: obj.MyId }, 
           { $set: { "MyFieldName" : MyValue} } 

              ); 
     if(oResult!=null) 
      Console.Writeline("object to update found"); 
     ... 
     return oResult; 
    } 

が、私はUpdateMany()メソッドを使用する方法がわからないです。 チェックアウトhttps://docs.mongodb.com/v3.2/reference/method/db.collection.updateMany/

関連する問題