Да, това е по проект. MongoDB изрично не предоставя присъединявания или транзакции. Премахване + Запазване е форма на транзакция.
Тук наистина имате две опции с ниска сложност, като и двете включват findAndModify
.
Опция №1:една колекция
Въз основа на вашето описание вие всъщност изграждате опашка с някои допълнителни функции. Ако използвате една колекция, тогава използвате findAndModify
за актуализиране на състоянието на всеки елемент, докато се обработва.
За съжаление, това означава, че ще загубите това:...че "входящата" колекция може да се поддържа много малка и бърза по този начин .
Вариант №2:две колекции
Другата опция е основно двуфазен ангажимент, използващ findAndModify
.
Разгледайте документите за този тук .
След като даден елемент бъде обработен в A задавате поле, за да го маркирате за изтриване. След това копирате този елемент в B . Веднъж копиран в B след това можете да премахнете елемента от A .