9

C# で mongo レコードを更新するためのこの更新クエリの記述方法。

db.collection.update({ "S_Id" : 110 },{ "Name" : "Name1","Batch" : "43","Date":"9/2/2011",  "Status" : 0 }); 

私はこのようにしようとしています

IMongoUpdate update = new UpdateDocument();
if (Named != null) { update = Update.Set("Name", "Name1"); }
if (Date != null) { update = Update.Set("Date", "18/02/2013"); }
if (Batch != null) { update = Update.Set("Batch",43); }
coll.Update(query, update);

私は正しいことをしていましたか、それともどのような方法でそれをしなければなりませんでしたか、正しい方法で進めてください。

4

2 に答える 2

14

あなたの例ではupdate、各オプションの値を上書きする可能性があるため、単一の更新コマンドのみをに送信しcol1.Update()ます。

このメソッドを使用したいと思うでしょうUpdate.Combine。漠然と次のようなものです:(テストされておらず、少し醜い...)

    var updateValues = new List<UpdateBuilder>();
    if (Named != null) { updateValues.Add(Update.Set("Name", "Name1")); }
    if (Date != null) { updateValues.Add(Update.Set("Date", "18/02/2013")); }
    if (Batch != null) { updateValues.Add(Update.Set("Batch", 43)); }
    IMongoUpdate update = Update.Combine(updateValues);
    coll.Update(query, update);
于 2013-02-18T13:43:38.637 に答える
1

現在は次のように変更されています。

    FilterDefinitionBuilder<BsonDocument> builder = Builders<BsonDocument>.Filter;
    FilterDefinition<BsonDocument> filter;

    filter = builder.Eq("_id",BsonObjectId.Create(objectid));

// または検索するフィールド

    var update = Builders<BsonDocument>.Update
 .Set("key1", "value1")
 .Set("key2", "value2")
 .CurrentDate("lastModified"); 

  Collection.UpdateOne(filter, update);
于 2016-07-10T10:27:12.017 に答える