Raccolte limitate sono raccolte a dimensione fissa che rimuovono automaticamente i documenti più vecchi (in base all'ordine di inserzione) sovrascrivendoli una volta che la raccolta è piena.
Le raccolte concettualmente limitate sono un buffer circolare anziché una coda.
Questo non sembra adatto a un caso d'uso di informazioni sull'ordine persistenti:non c'è alcun "gancio" per reinserire i documenti in una raccolta limitata quando vengono eliminati e se la tua raccolta limitata è troppo piccola potresti sovrascrivere documenti prima che vengano elaborati.
Penso che tu davvero desidera utilizzare una raccolta normale (senza limite).
Elimina i vecchi ordini in base allo stato
Se desideri eliminare gli ordini in base a un valore di stato, dovresti gestirlo nel codice dell'applicazione (ad esempio, quando un ordine passa dallo stato "In attesa" allo stato "Elaborato", esegui la pulizia necessaria).
Elimina gli ordini vecchi/scaduti in base al tempo
Se desideri che gli ordini vecchi/scaduti vengano eliminati automaticamente in un momento specifico, un buon approccio sarebbe utilizzare una normale raccolta con un scadenza Time-To-Live (TTL) a livello di documento , ad esempio:
db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
È quindi possibile impostare (o estendere) la scadenza per ciascun documento d'ordine in base a expireAt
Data. Nota che questa potrebbe non essere un'opzione adatta se devi controllare entrambi expireAt
valore e un campo di stato (la scadenza del TTL si basa esclusivamente sull'indice di data fornito).