sql >> Database >  >> NoSQL >> MongoDB

Is het verplaatsen van documenten tussen collecties een goede manier om statuswijzigingen in MongoDB weer te geven?

Ja dit is door het ontwerp. MongoDB biedt expliciet geen joins of transacties aan. Verwijderen + Opslaan is een vorm van transactie.

Je hebt hier echt twee opties met een lage complexiteit, beide hebben betrekking op findAndModify .

Optie #1:één verzameling

Op basis van uw beschrijving bouwt u in feite een wachtrij met enkele extra functies. Als u gebruikmaakt van één verzameling, gebruikt u findAndModify om de status van elk item bij te werken terwijl het wordt verwerkt.

Helaas betekent dit dat je dit verliest:...dat de "inkomende" verzameling op deze manier erg klein en snel kan worden gehouden .

Optie #2:twee collecties

De andere optie is in feite een commit in twee fasen, waarbij gebruik wordt gemaakt van findAndModify .

Bekijk de documenten voor deze hier .

Zodra een artikel is verwerkt in A u stelt een veld in om het te markeren voor verwijdering. Vervolgens kopieer je dat item naar B . Eenmaal gekopieerd naar B je kunt het item vervolgens verwijderen uit A .



  1. MongoDB-schema afvlakken

  2. Wat is de $unwind-operator in MongoDB?

  3. Hoe kan ik verbinding maken met MongoDB Atlas met Robomongo?

  4. MongoDB Ophalen van documenten traag (indexering gebruikt)