MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verfolgen Sie gelöschte Dokumente in der begrenzten Sammlung von Mongo DB

Begrenzte Sammlungen sind Sammlungen mit fester Größe, die automatisch die ältesten Dokumente (basierend auf der Einfügungsreihenfolge) entfernen, indem sie überschrieben werden, sobald die Sammlung voll ist.

Konzeptionell begrenzte Sammlungen sind eher ein Ringpuffer als eine Warteschlange.

Dies klingt nicht nach einer guten Lösung für einen Anwendungsfall von dauerhaften Bestellinformationen – es gibt keinen „Hook“ zum erneuten Einfügen von Dokumenten in eine begrenzte Sammlung, wenn sie gelöscht werden, und wenn Ihre begrenzte Sammlung zu klein ist, können Sie sie überschreiben Dokumente, bevor sie verarbeitet werden.

Ich denke, Sie wirklich eine normale (nicht begrenzte) Sammlung verwenden möchten.

Löschen Sie alte Bestellungen basierend auf dem Status

Wenn Sie Bestellungen basierend auf einem Statuswert löschen möchten, sollten Sie dies in Ihrem Anwendungscode behandeln (wenn beispielsweise eine Bestellung vom Status „Ausstehend“ in den Status „Verarbeitet“ wechselt, führen Sie die erforderliche Bereinigung durch).

Alte/abgelaufene Bestellungen nach Zeit löschen

Wenn Sie möchten, dass alte/abgelaufene Bestellungen automatisch zu einem bestimmten Zeitpunkt gelöscht werden, wäre ein guter Ansatz, eine normale Sammlung mit einem Time-To-Live (TTL)-Ablauf auf Dokumentebene , zB:

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

Sie können dann das Ablaufdatum für jedes Bestelldokument basierend auf expireAt festlegen (oder verlängern). Datum. Beachten Sie, dass dies möglicherweise keine geeignete Option ist, wenn Sie sowohl expireAt überprüfen müssen Wert und ein Statusfeld (TTL-Ablauf basiert ausschließlich auf dem bereitgestellten Datumsindex).