如何编写此更新查询以更新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);
我做得正确或以何种方式做到了,请让我以正确的方式继续。
答案 0 :(得分:11)
在您的示例中,您可能会为每个选项覆盖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);
答案 1 :(得分: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);