sql >> Database teknologi >  >> NoSQL >> MongoDB

spor slettede dokumenter i Mongo DB's begrænsede samling

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).




  1. ekskluder felter i $lookup-sammenlægning

  2. Slaget om NoSQL-databaserne - Sammenligning af MongoDB &MSSQL's NoSQL-funktioner

  3. Hvorfor får jeg mongoose.connect er ikke en funktion, når jeg prøver at oprette forbindelse til mongoose?

  4. MongoSocketReadException:For tidligt nået slutningen af ​​streamen (efter en periode med inaktivitet)