我有一个集合,我正在进行插入/更新操作。对于插入我使用代码:
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
字段。我正在尝试很多方法,但无法获得任何解决方案。请提出一些建议....即使我根据这一点得到了一些链接并尝试了......但是没有一个人在锻炼。
答案 0 :(得分:0)
您需要修复$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" }
}}};