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

traccia i documenti cancellati nella collezione limitata di Mongo DB

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