1

アプリ内のドキュメントのコレクションに 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);

したがって、1日後にストーリードキュメントは期限切れになり、その人から期限切れになるにはそのストーリーへの参照が必要になります

4

2 に答える 2

0

これは TTL インデックスでは処理できません。cron ジョブ/スケジュールされたタスクを使用して、古いドキュメントを削除できます。

これは、 MongoDbでバックグラウンド プロセスを実装するための優れた軽量な方法です。

于 2015-06-28T04:14:29.960 に答える
-1

組み込みの TTL ドキュメントの有効期限は、期限切れのドキュメントへの参照の削除をサポートしていません。

必要に応じて、独自のコードでその機能を提供する必要があります。

于 2014-04-02T14:31:04.133 に答える