MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

suivre les documents supprimés dans la collection limitée de Mongo DB

Collections limitées sont des collections de taille fixe qui suppriment automatiquement les documents les plus anciens (en fonction de l'ordre d'insertion) en les écrasant une fois la collection pleine.

Conceptuellement, les collections plafonnées sont un tampon circulaire plutôt qu'une file d'attente.

Cela ne semble pas convenir à un cas d'utilisation d'informations de commande persistantes - il n'y a pas de "crochet" pour réinsérer des documents dans une collection limitée lorsqu'ils sont supprimés, et si votre collection limitée est trop petite, vous pouvez écraser documents avant qu'ils ne soient traités.

Je pense que vous vraiment souhaitez utiliser une collection normale (non plafonnée).

Supprimer les anciennes commandes en fonction du statut

Si vous souhaitez supprimer des commandes en fonction d'une valeur d'état, vous devez gérer cela dans votre code d'application (par exemple, lorsqu'une commande passe de l'état "En attente" à l'état "Traitée", effectuez le nettoyage nécessaire).

Supprimer les commandes anciennes/expirées en fonction du temps

Si vous souhaitez que les commandes anciennes/expirées soient automatiquement supprimées à un moment précis, une bonne approche consisterait à utiliser une collection normale avec un expiration de la durée de vie (TTL) au niveau du document , par exemple :

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

Vous pouvez ensuite définir (ou prolonger) l'expiration de chaque document de commande en fonction de expireAt Date. Notez que cela peut ne pas être une option appropriée si vous devez vérifier à la fois le expireAt valeur et un champ d'état (l'expiration du TTL est uniquement basée sur l'index de date fourni).