我想用C#驱动程序更新(类型)MongoDB集合中的一行。在处理MongoCollection<User>
类型的特定集合的数据时,我倾向于避免从集合中检索敏感数据(盐,密码哈希等)。MongoDB:只更新特定字段
现在我试图更新User
实例。但是,我从来没有真正检索到敏感数据,所以我想在检索模型实例(据我所知)中,这个数据应该是default(byte[])
,然后我应用修改并将新数据提交给集合。
也许我在监督MongoDB的C#驱动程序怎么用MongoCollection<T>.Save(T item)
没有更新的具体性能,如User.PasswordHash
或User.PasswordSalt
一些小事?我应该先检索完整记录,更新那里的“安全”属性,然后写回来?还是有一个奇特的选择从更新中排除某些字段?
在此先感谢
感谢您指出了这一点。但是我的根本问题仍然存在:我希望更新我的类型'MongoCollection'中的所有属性和'T'实例的值,除了一组特定的已知字段。 'Update .EverythingFrom(someObject).Except(x => x.ExceptThis).Except(x => x.ExceptThat)' –
Manny
2013-02-16 10:28:21
这是您需要编写的一项自定义作业(EverythingFrom ..) 。在客户端不难做到,通过遍历BsonMemberMap并获取所有映射成员,然后只有在知道该值发生更改时才从每个成员创建Update.Set()。它不能保证一致性,因为自从您将记录读入内存之后,数据库可能发生了变化。 – 2013-02-25 16:48:14