sql >> データベース >  >> NoSQL >> MongoDB

MongoDBコレクションドキュメントを自動的にエージングアウトします

    データベースを操作する際の一般的なシナリオの1つは、時間に基づいて一部のテーブルを自動的に削除することです。たとえば、製品のバックグラウンドジョブを追跡するためのジョブテーブルがあり、最後の1時間だけジョブを保持したい場合があります。通常の実装方法は、定期的に実行され、テーブルをガベージコレクションするデーモンプロセスを作成することです。これが非常に一般的なプロセスであることを考えると、MongoDBのスタッフは、この機能をデータベースに組み込んでおり、MongoDBのデプロイメントで活用できます。これは「TTLインデックス」と呼ばれます。 TTLインデックスを2つの簡単な手順で使用する方法は次のとおりです。

    1. ステップ1:日付フィールドを追加する

      ドキュメントに日付フィールドを追加して、ドキュメントの経過時間を示します。 MongoDBはこのフィールドを使用して、ドキュメントの有効期限が切れており、削除する必要があるかどうかを判断します。ドキュメントをより長く保持したい場合は、このドキュメントを更新された日付で更新してください。以下の例では、ジョブコレクションに「creationTime」フィールドを追加しました。

      db.jobs.insert( {
         "name" : testjob
         "creationTime": new Date('Oct 30, 2013: 11:00:00'),
         "type": 2,
      } )
    2. ステップ2:TTLインデックスを追加する

      このフィールドのコレクションにTTLインデックスを追加します。以下のこの例では、expireAfterSeconds値3600を使用します。これにより、1時間ごとにジョブが期限切れになります:

      db.jobs.ensureIndex( { "creationTime": 1 }, { expireAfterSeconds: 3600 } )

      TTLデーモンは60秒ごとに実行されるため、ドキュメントは有効期限が切れてから約60秒以内に削除されます。 TTLインデックスのもう1つの利点は、通常のインデックスと同じように動作することです。したがって、日付フィールドでクエリを実行すると、クエリプランでインデックスが使用されます。詳細については、TTLインデックスに関するMongoDBのドキュメントを参照してください。


    1. MongoDBコレクションのサブセットを別のコレクションに保存する

    2. オブジェクトの配列でのMongoose/MongoDB$addToSet機能の使用

    3. MongoDBでテキストインデックスを作成する方法

    4. MongoDB:配列内のインデックスによって参照される、配列内の単一のサブ要素を更新するにはどうすればよいですか?