sql >> Database >  >> NoSQL >> MongoDB

track verwijderde documenten in de gecapte collectie van Mongo DB

Afgetopte collecties zijn verzamelingen van vaste grootte die automatisch de oudste documenten verwijderen (op basis van de volgorde van invoegen) door ze te overschrijven zodra de verzameling vol is.

Conceptueel afgetopte collecties zijn een circulaire buffer in plaats van een wachtrij.

Dit klinkt niet als een goede oplossing voor het gebruik van persistente bestelinformatie -- er is geen "haakje" om documenten opnieuw in een gecapte collectie in te voegen wanneer ze worden verwijderd, en als uw gecapte collectie te klein is, kunt u deze overschrijven documenten voordat ze worden verwerkt.

Ik denk dat je echt een normale (niet-afgetopte) verzameling wilt gebruiken.

Oude bestellingen verwijderen op basis van status

Als u bestellingen wilt verwijderen op basis van een statuswaarde, moet u dit in uw toepassingscode verwerken (wanneer een bestelling bijvoorbeeld van de status 'In behandeling' naar de status 'Verwerkt' gaat, moet u de vereiste opschoning uitvoeren).

Verwijder oude/verlopen bestellingen op basis van tijd

Als u oude/verlopen bestellingen automatisch wilt laten verwijderen op een bepaald tijdstip, is het een goede benadering om een ​​normale verzameling te gebruiken met een Time-To-Live (TTL)-vervaldatum op documentniveau , bijvoorbeeld:

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

U kunt dan de vervaldatum voor elk besteldocument instellen (of verlengen) op basis van de expireAt datum. Houd er rekening mee dat dit mogelijk geen geschikte optie is als u zowel de expireAt waarde en een statusveld (TTL-verloop is uitsluitend gebaseerd op de opgegeven datumindex).




  1. mean.js-menu werkt niet

  2. Voorkom dat Spring Data voor Mongo id's naar ObjectId converteert

  3. Mongodb Java-query voor datumbereik

  4. Veld in mongodb-groep houden door