【问题标题】:Automatically setting a DateTimeAccessed field in MongoDB (via C# MongoDriver)在 MongoDB 中自动设置 DateTimeAccessed 字段(通过 C# MongoDriver)
【发布时间】:2026-01-12 18:10:01
【问题描述】:
有没有一种方便的方法来定位一个字段(在这种情况下是DateTimeAccessed、DateTimeModified 等,尽管更通用的答案也可以)在文档更新时作为副作用被蒙哥感动?
我可以尝试包装mongoCollection.Find*|Remove*... 方法,或者尝试拦截Query 对象,寻找适当的字段($set -> add set DateTimeModified,例如),但所有这些似乎都相当临时和哈基。是否有一种标准方法可以在不模拟数据库交互的“钩子”的情况下执行此类操作?
【问题讨论】:
标签:
mongodb
mongodb-.net-driver
【解决方案1】:
我通常会创建一个基本的 Update 方法,所有其他方法都使用它来开始构建它们的更新。
例如
/// <summary>
/// Get the initial update builder
/// </summary>
private UpdateBuilder<Account> UpdateBuilder()
{
var now = DateTime.UtcNow;
return new UpdateBuilder<Account>()
.Set(e => e.DateTimeUtcAccessed, now)
.Set(e => e.DateTimeUtcModified, now);
}
您也可以将其设为通用方法,并将接口IDateTimeStamps 添加到您要应用此方法的所有类中。