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 .