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

本文关键字:更新 字段 mongodb 何编写 查询 | 更新日期: 2023-09-27 17:59:47

如何在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);

如果我做得正确,或者我必须以什么方式做,请告诉我正确的方式。

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

在您的示例中,您可能会覆盖每个选项的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);

现在已修改为:

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