Begrænsede samlinger er samlinger af fast størrelse, som automatisk fjerner de ældste dokumenter (baseret på indsættelsesrækkefølge) ved at overskrive dem, når samlingen er fuld.
Konceptuelt begrænsede samlinger er en cirkulær buffer snarere end en kø.
Dette lyder ikke som en god egnethed til et tilfælde af vedvarende ordreoplysninger -- der er ingen "hook" til at genindsætte dokumenter i en begrænset samling, når de slettes, og hvis din begrænsede samling er for lille, kan du overskrive dokumenter, før de behandles.
Jeg tror, du virkelig ønsker at bruge en normal (ikke-begrænset) samling.
Slet gamle ordrer baseret på status
Hvis du ønsker at slette ordrer baseret på en tilstandsværdi, skal du håndtere dette i din applikationskode (når en ordre f.eks. flyttes fra "Afventer" til "Behandlet" tilstand, skal du udføre den oprydning, der kræves).
Slet gamle/udløbne ordrer baseret på tid
Hvis du ønsker at få gamle/udløbne ordrer slettet automatisk på et bestemt tidspunkt, ville en god tilgang være at bruge en normal samling med en Udløb af Time-To-Live (TTL) på dokumentniveau , f.eks.:
db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
Du kan derefter indstille (eller forlænge) udløbet for hvert ordredokument baseret på expireAt
dato. Bemærk, at dette muligvis ikke er en passende mulighed, hvis du skal kontrollere både expireAt
værdi og et statusfelt (TTL-udløb er udelukkende baseret på det angivne datoindeks).