Koleksi yang dibatasi adalah koleksi berukuran tetap yang secara otomatis menghapus dokumen terlama (berdasarkan urutan penyisipan) dengan menimpanya setelah koleksi penuh.
Koleksi yang dibatasi secara konseptual adalah buffer melingkar, bukan antrean.
Ini kedengarannya tidak cocok untuk kasus penggunaan informasi pesanan yang bertahan -- tidak ada "pengait" untuk memasukkan kembali dokumen ke dalam koleksi yang dibatasi saat dihapus, dan jika koleksi yang dibatasi terlalu kecil, Anda dapat menimpanya dokumen sebelum diproses.
Saya pikir Anda sangat ingin menggunakan koleksi normal (tanpa batas).
Hapus pesanan lama berdasarkan status
Jika Anda ingin menghapus pesanan berdasarkan beberapa nilai status, Anda harus menangani ini dalam kode aplikasi Anda (misalnya, saat pesanan berpindah dari status "Tertunda" ke "Diproses", lakukan pembersihan apa pun yang diperlukan).
Hapus pesanan lama/kedaluwarsa berdasarkan waktu
Jika Anda ingin agar pesanan lama/kedaluwarsa dihapus secara otomatis pada waktu tertentu, pendekatan yang baik adalah menggunakan koleksi normal dengan kedaluwarsa Time-To-Live (TTL) tingkat dokumen , misalnya:
db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
Anda kemudian dapat mengatur (atau memperpanjang) kedaluwarsa untuk setiap dokumen pesanan berdasarkan expireAt
tanggal. Perhatikan bahwa ini mungkin bukan opsi yang sesuai jika Anda perlu memeriksa keduanya expireAt
nilai dan bidang status (kedaluwarsa TTL semata-mata didasarkan pada indeks tanggal yang diberikan).