Kolekcje ograniczone to kolekcje o stałym rozmiarze, które automatycznie usuwają najstarsze dokumenty (na podstawie kolejności wstawiania) przez nadpisanie ich po zapełnieniu kolekcji.
Kolekcje ograniczone koncepcyjnie są raczej okrągłym buforem niż kolejką.
To nie brzmi jak dobry przypadek użycia utrwalania informacji o zamówieniu — nie ma „haczyka”, aby ponownie wstawić dokumenty do ograniczonej kolekcji, gdy zostaną usunięte, a jeśli Twoja ograniczona kolekcja jest zbyt mała, możesz ją zastąpić dokumenty przed ich przetworzeniem.
Myślę, że naprawdę chcesz używać normalnej (bez limitów) kolekcji.
Usuń stare zamówienia na podstawie statusu
Jeśli chcesz usunąć zamówienia na podstawie jakiejś wartości stanu, powinieneś to zrobić w kodzie aplikacji (na przykład, gdy zamówienie przechodzi ze stanu „Oczekujące” do „Przetwarzane”, wykonaj wszelkie wymagane czyszczenie).
Usuń stare/wygasłe zamówienia na podstawie czasu
Jeśli chcesz, aby stare/wygasłe zamówienia były automatycznie usuwane w określonym czasie, dobrym rozwiązaniem byłoby użycie normalnej kolekcji z wygaśnięcie czasu wygaśnięcia (TTL) na poziomie dokumentu , np.:
db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
Następnie możesz ustawić (lub przedłużyć) wygaśnięcie ważności każdego dokumentu zamówienia na podstawie expireAt
data. Zauważ, że może to nie być odpowiednia opcja, jeśli musisz sprawdzić oba expireAt
wartość i pole statusu (wygaśnięcie TTL jest oparte wyłącznie na podanym indeksie dat).