2014-04-02 44 views
1

我有要求在我的應用中設置一個文檔集合的TTL,但也需要這些文檔被其他集合引用,我不確定這將如何工作?貓鼬參考文檔的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); 

所以經過一天的故事DOC會過期,我需要裁判來這個故事從人到期

回答

0

內置-in TTL文檔到期不支持刪除對過期文檔的引用。

如果需要,您需要在自己的代碼中提供該功能。

0

您無法使用TTL索引處理此問題。 您可以使用cron作業/計劃任務來刪除舊文檔。

我建議你閱讀this,這是一個在MongoDb上實現後臺進程的不錯的輕量級方法。