Mongoose 参考文档的 TTL 过期
Posted
技术标签:
【中文标题】Mongoose 参考文档的 TTL 过期【英文标题】:TTL expiration of Mongoose referenced document 【发布时间】:2014-05-13 14:05:56 【问题描述】:我需要为我的应用程序中的文档集合设置 TTL,但还需要这些文档被另一个集合引用,我不确定这将如何工作?
在文档上设置 TTL 是否会在文档过期时从所有其他参考文档中删除该文档,还是我必须自己编写后端进程而不使用 mongoDb 的 TTL 索引?
我想要的功能的示例架构:
var mongoose = require('mongoose')
, Schema = mongoose.Schema
var personSchema = Schema(
_id : Number,
name : String,
age : Number,
stories : [ type: Schema.Types.ObjectId, ref: 'Story' ]
);
var storySchema = Schema(
_creator : type: Number, ref: 'Person' ,
createdAt: type: Date, expires: 60*60*24 ,
title : String,
fans : [ type: Number, ref: 'Person' ]
);
var Story = mongoose.model('Story', storySchema);
var Person = mongoose.model('Person', personSchema);
所以一天后,Story 文档将过期,我需要该故事的 ref 从该人过期
【问题讨论】:
【参考方案1】:您无法使用 TTL 索引来处理此问题。 您可以使用 cron 作业/计划任务来删除旧文档。
我建议您阅读this,这是一种在 MongoDb 上实现后台进程的轻量级方式。
【讨论】:
【参考方案2】:内置的 TTL 文档过期不支持删除对过期文档的引用。
如果需要,您需要在自己的代码中提供该功能。
【讨论】:
以上是关于Mongoose 参考文档的 TTL 过期的主要内容,如果未能解决你的问题,请参考以下文章