sql >> Databasteknik >  >> NoSQL >> MongoDB

spåra raderade dokument i Mongo DB:s begränsade samling

Begränsade samlingar är samlingar av fast storlek som automatiskt tar bort de äldsta dokumenten (baserat på insättningsordning) genom att skriva över dem när samlingen är full.

Konceptuellt begränsade samlingar är en cirkulär buffert snarare än en kö.

Detta låter inte som en bra passform för ett användningsfall med beständig beställningsinformation -- det finns ingen "krok" för att infoga dokument igen i en begränsad samling när de raderas, och om din begränsade samling är för liten kan du skriva över dokument innan de behandlas.

Jag tror att du verkligen vill använda en normal (icke-begränsad) samling.

Ta bort gamla beställningar baserat på status

Om du vill ta bort beställningar baserade på något tillståndsvärde, bör du hantera detta i din applikationskod (till exempel när en beställning flyttas från "Pending" till "Behandlad" tillstånd gör vad som helst för rensning som krävs).

Ta bort gamla/förfallna beställningar baserat på tid

Om du vill att gamla/förfallna beställningar ska raderas automatiskt vid en viss tidpunkt, skulle ett bra tillvägagångssätt vara att använda en normal samling med en Dokumentnivå Time-To-Live (TTL) utgång , t.ex.:

db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )

Du kan sedan ställa in (eller förlänga) utgången för varje orderdokument baserat på expireAt datum. Observera att detta kanske inte är ett lämpligt alternativ om du behöver kontrollera både expireAt värde och ett statusfält (TTL-förfallodatum baseras enbart på angivet datumindex).




  1. Introduktion till Redis Data Structures:Bitmaps

  2. Fel vid installation av MongoDb PHP-drivrutin med XAMPP på Max OS Lion

  3. Varför är en enda Jedis-instans inte trådsäker?

  4. Kan inte infoga data i mongodalab-samlingen