如何使用c#更新mongodb中的嵌入式文档
本文关键字:嵌入式 文档 mongodb 何使用 更新 | 更新日期: 2023-09-27 18:15:47
我有一个集合,我正在做插入/更新操作。对于插入,我使用代码:
MongoCollection<BsonDocument> tblCity = mydb.GetCollection<BsonDocument>("tblCity");
BsonDocument CollectionCity = new BsonDocument {
{ "CityCode", cityCode },
{ "CityName", cityName },
{ "stamps" , new BsonDocument {
{"ins", DateTime.Now},
{"upd", ""},
{"createUsr", UserId},
{"updUsr", ""},
{"Ins_Ip", ""},
{"Upd_IP", GetIP()}
}
}
};
tblCity.Insert(CollectionCity);
它工作正常。但是,当我更新我使用的代码:
MongoCollection <BsonDocument> tblCity = mydb.GetCollection<BsonDocument>("tblCity");
var query = new QueryDocument { { "City_strCode", cityCode } };
var update = new UpdateDocument {
{ "$set", new BsonDocument("City_strName", cityName) },
{ "stamps" , new BsonDocument{
{"upd", DateTime.Now},
{"updUsr", ""},
{"Upd_IP", GetIP()
}}
}};
tblCity.Update(query, update);
但问题是,没有改变ins
日期,我想更新upd
字段。但它是删除ins
字段和更新upd
字段。我尝试了很多方法,但没有得到任何解决方案。请建议....甚至我得到了一些基于此的链接,并尝试…
您需要修复对$set
和查询的使用。
您的查询与插入文档中的字段名不匹配。
var query = new QueryDocument { { "CityCode", cityCode } };
如果你使用的是$set
,那么传递所有你想要改变的字段作为BsonDocument
的一部分:
var query = new QueryDocument { { "CityCode", cityCode } };
var update = new UpdateDocument {
{ "$set", new BsonDocument {
{ "CityName", "San Fran"},
{ "stamps.upd" , DateTime.Now()},
{ "stamps.updUsr", ""},
{ "stamps.Upd_IP", "10.0.0.1" }
}}};