Ano, je to záměrné. MongoDB výslovně neposkytuje spojení nebo transakce. Odebrat + Uložit je forma transakce.
Zde máte skutečně dvě možnosti s nízkou složitostí, obě zahrnují findAndModify
.
Možnost č. 1:jedna kolekce
Na základě vašeho popisu v podstatě vytváříte frontu s některými funkcemi navíc. Pokud využíváte jednu kolekci, pak použijete findAndModify
aktualizovat stav každé položky během jejího zpracovávání.
Bohužel to znamená, že přijdete o toto:...že „příchozí“ sbírka může být tímto způsobem udržována velmi malá a rychlá .
Možnost č. 2:dvě kolekce
Druhou možností je v podstatě dvoufázové potvrzení, využívající findAndModify
.
Podívejte se na dokumenty k tomuto zde .
Jakmile je položka zpracována v A nastavíte pole pro označení pro smazání. Poté tuto položku zkopírujete do B . Po zkopírování do B poté můžete položku odebrat z A .