Ограничени колекции са колекции с фиксиран размер, които автоматично премахват най-старите документи (въз основа на реда за вмъкване), като ги презаписват, след като колекцията е пълна.
Концептуално ограничените колекции са кръгов буфер, а не опашка.
Това не звучи като подходящо за случай на използване на постоянна информация за поръчка - няма "кука" за повторно вмъкване на документи в ограничена колекция, когато бъдат изтрити, и ако вашата ограничена колекция е твърде малка, можете да презапишете документи, преди да бъдат обработени.
Мисля, че наистина искате да използвате нормална (неограничена) колекция.
Изтриване на стари поръчки въз основа на статус
Ако искате да изтриете поръчки въз основа на някаква стойност на състояние, трябва да направите това в кода на приложението си (например, когато дадена поръчка премине от състояние „Чакащо“ в състояние „Обработено“, направете каквото е необходимо почистване).
Изтриване на стари/изтекли поръчки въз основа на време
Ако искате старите/изтеклите поръчки да се изтриват автоматично в определен момент, добър подход би бил използването на нормална колекция с изтичане на времето за живот (TTL) на ниво документ , напр.:
db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
След това можете да зададете (или удължите) срока на валидност за всеки документ за поръчка въз основа на expireAt
дата. Имайте предвид, че това може да не е подходяща опция, ако трябва да проверите и expireAt
стойност и поле за състояние (изтичането на TTL се основава единствено на предоставения индекс на датата).