C# 如何编写更新查询来更新mongodb中的多个字段?

C# 如何编写更新查询来更新mongodb中的多个字段?,c#,mongodb,C#,Mongodb,如何编写此更新查询以更新c#中的mongo记录 我正在这样努力 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"

如何编写此更新查询以更新c#中的mongo记录

我正在这样努力

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);

我做的是否正确,或者我必须以什么方式做,请告诉我正确的方式继续。在您的示例中,您可能会覆盖每个选项的
update
值,因此将只向
col1.update()
发送一个更新命令

您需要使用
Update.Combine
方法,大致如下:(未测试,有点难看…)

var updateValues=new List();
if(Named!=null){updateValues.Add(Update.Set(“Name”,“Name1”);}
如果(Date!=null){updateValues.Add(Update.Set(“Date”,“18/02/2013”);}
如果(Batch!=null){updateValues.Add(Update.Set(“Batch”,43));}
IMongoUpdate=update.Combine(updateValue);
coll.Update(查询、更新);

它现在已修改为:

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

    filter = builder.Eq("_id",BsonObjectId.Create(objectid));
FilterDefinitionBuilder=Builders.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);
var update=Builders.update
.Set(“键1”、“值1”)
.Set(“键2”、“值2”)
.当前日期(“上次修改”);
Collection.UpdateOne(过滤器,更新);

这不适用,因为问题具体是关于在多行上构建更新。你的查询是有效的,只是没有回答问题。
    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);