【问题标题】:Automatically setting a DateTimeAccessed field in MongoDB (via C# MongoDriver)在 MongoDB 中自动设置 DateTimeAccessed 字段(通过 C# MongoDriver)
【发布时间】:2026-01-12 18:10:01
【问题描述】:

有没有一种方便的方法来定位一个字段(在这种情况下是DateTimeAccessedDateTimeModified 等,尽管更通用的答案也可以)在文档更新时作为副作用被蒙哥感动?

我可以尝试包装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 添加到您要应用此方法的所有类中。

    【讨论】:

      最近更新 更多