【发布时间】:2017-05-11 21:43:05
【问题描述】:
我有一个标记集合,这些标记有一个“createdAt”日期,mongo 将每小时对我过期,我还有一个用户集合,其中每个用户都有一个 ObjectId 列表到他们设置的标记,有什么办法吗当 MongoDB 过期标记时,我可以从用户标记列表中删除标记 ID?
【问题讨论】:
我有一个标记集合,这些标记有一个“createdAt”日期,mongo 将每小时对我过期,我还有一个用户集合,其中每个用户都有一个 ObjectId 列表到他们设置的标记,有什么办法吗当 MongoDB 过期标记时,我可以从用户标记列表中删除标记 ID?
【问题讨论】:
引用TTL Index - Delete Operations
mongod 中的后台线程读取索引中的值并从集合中删除过期文档。
当 TTL 线程处于活动状态时,您将在 db.currentOp() 的输出或数据库分析器收集的数据中看到删除操作。
似乎没有任何方法可以挂钩该过程。
您可以做的是停止在用户端保留标记列表,而是在标记本身中保留用户 ID(并根据您将如何存储引用和查询它添加适当的索引)。这样您就可以快速检索用户的标记,而无需担心列表中的条目过时而需要额外查询。
【讨论】: