上限付きコレクション 固定サイズのコレクションであり、コレクションがいっぱいになると、最も古いドキュメントを(挿入順序に基づいて)上書きして自動的に削除します。
概念的に上限のあるコレクションは、キューではなく循環バッファーです。
これは、注文情報を保持するユースケースには適していないようです。ドキュメントが削除されたときに、上限のあるコレクションにドキュメントを再挿入する「フック」はありません。上限のあるコレクションが小さすぎる場合は、上書きする可能性があります。処理される前のドキュメント。
本当に 通常の(上限のない)コレクションを使用したい。
ステータスに基づいて古い注文を削除
ある状態の値に基づいて注文を削除する場合は、アプリケーションコードでこれを処理する必要があります(たとえば、注文が「保留中」から「処理済み」の状態に移行した場合は、必要なクリーンアップを実行します)。
時間に基づいて古い/期限切れの注文を削除する
古い/期限切れの注文を特定の時間に自動的に削除する場合は、ドキュメントレベルの存続可能時間(TTL)の有効期限 例:
db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
次に、expireAt
に基づいて、各注文ドキュメントの有効期限を設定(または延長)できます。 日にち。 expireAt
の両方をチェックする必要がある場合、これは適切なオプションではない可能性があることに注意してください。 値とステータスフィールド(TTLの有効期限は、提供された日付インデックスのみに基づいています)。