c# - MongoDB:仅更新特定字段

标签 c# mongodb mongodb-.net-driver

我正在尝试使用 C# 驱动程序更新(类型化的)MongoDB 集合中的一行。在处理 MongoCollection<User> 类型的特定集合的数据时,我倾向于避免从集合中检索敏感数据(盐、密码哈希等)

现在我正在尝试更新 User实例。但是,我从来没有真正检索过敏感数据,所以我猜这个数据应该是 default(byte[])在我应用修改并将新数据提交到集合之前,在检索到的模型实例中(据我所知)。

也许我正在监督 MongoDB C# 驱动程序中的一些琐碎事情,我如何使用 MongoCollection<T>.Save(T item)不更新特定属性,例如 User.PasswordHashUser.PasswordSalt ?我应该先检索完整记录,更新那里的“安全”属性,然后再写回去吗?或者是否有从更新中排除某些字段的奇特选项?

提前致谢

最佳答案

Save(someValue) 适用于您希望结果记录成为或成为您传入的完整对象 (someValue) 的情况。

你可以使用

var query = Query.EQ("_id","123");
var sortBy = SortBy.Null;
var update = Update.Inc("LoginCount",1).Set("LastLogin",DateTime.UtcNow); // some update, you can chain a series of update commands here

MongoCollection<User>.FindAndModify(query,sortby,update); 

方法。

使用 FindAndModify,您可以准确指定现有记录中的哪些字段要更改,而无需考虑其余部分。

您可以查看示例 here .

现有记录中唯一需要的就是它的 _id,这两个 secret 字段不需要加载或映射回您的 POCO 对象。

关于c# - MongoDB:仅更新特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14853362/

相关文章:

c# - 数组和可空类型是否可以在声明之前使用?

c# - 单声道 mkbundle 抛出 'IKVM.Reflection.BadImageFormatException'

c# - 使用 Exists 谓词执行 .. While.. 操作。访问修改后的闭包?

mongodb - 在生产 MongoDB 上运行 db.stats() 时担心无效的 BSONObj 错误

c# - 数据库从 RavenDB 迁移到 MongoDB

c# - ASHX 呈现为损坏的图像

mongodb - 在 mongodb 中使用未知键查询

MySQL(RDBMS)用于订单/运输信息,MongoDB(NoSQL)用于产品信息。这可以吗?

c# - 使用 mongo C# 驱动程序在嵌入式文档中维护 Id 属性名称

c# - MongoDB:如何在 C# 中使用嵌套数组加载集合?