sql >> Databáze >  >> NoSQL >> MongoDB

Je přesouvání dokumentů mezi kolekcemi dobrý způsob, jak reprezentovat změny stavu v MongoDB?

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 .



  1. Redis seznam vnořených klíčů

  2. Agregát MongoDB, jak přidatToSet každý prvek pole ve skupinovém potrubí

  3. Správa žurnálování v MongoDB

  4. python flask jak předat dynamický parametr dekorátoru