这是我的代码段:
var query = Query<MyData>.EQ(e => e.key, key);
var entity = collection.FindOne(query);
if (entity != null)
{
entity.Value = "abc";
// there are another 20 assignments here
// ...
collection.Save(entity);
}
如果集合中有其他未在MyData对象中定义的字段,则会清除这些字段。有没有办法离开MyData类中未定义的字段?
答案 0 :(得分:0)
我明白了。指定查询对象时,请使用非强类型样式,如此
var query = Query.EQ("myID", obj.myID);
而不是
var query = Query.EQ<MyObject>("myID", obj.myID);
并在更新查询中指定要更新的字段,如此
var update = Update.SetWrapped("fieldName", obj.fieldName).SetWrapped(...)...SetWrapped(...);
collection.Update(query, update);
因此,更新的mongo doc中的未知字段不会被删除。我相信这是因为查询对象中的非强类型样式不强制按名称匹配。
谢谢,希望这对任何遇到同样问题的人都有帮助。