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

Existuje nějaký způsob, jak atomicky aktualizovat dvě sbírky v MongoDB?

Je zde mnoho odpovědí, ale chci zde vyplnit všechna prázdná místa:

Existuje nějaký způsob, jak atomicky aktualizovat dvě kolekce v MongoDB?

Ne. Atomová aktualizace dvou kolekcí je ve skutečnosti transakce. MongoDB nepodporuje transakce napříč kolekcemi ani v rámci kolekce.

MongoDB poskytuje několik modifikátorů, které jsou atomické v jednom dokumentu. Můžete tedy zvýšit několik různých proměnných najednou ($inc ). Ačkoli zde existují určitá omezení, nemůžete provádět dvě různé operace na jedné vlastnosti.

Existuje způsob, jak podmínečně změnit něco v jedné kolekci na základě výsledků jiné kolekce najednou?

Zde jsou některé dokumenty o atomových aktualizacích obecně. Co však skutečně potřebujete, je fronta a nějaká forma dvoufázového potvrzení nebo potřebujete spouštěče.

Spouštěče ještě nebyly implementovány, takže to ve vašem případě nepřipadá v úvahu.

Je možné, že mezi těmito akcemi bude zpráva označena jako přečtená, pak nesprávně snížím počet „nepřečtených“.

V tomto okamžiku máte několik různých strategií, jak zajistit, aby se to chovalo s určitou úrovní konzistence. Upřímně řečeno, na základě vašeho popisu možná budete chtít prozkoumat vytvoření jednoduché fronty, která aktualizuje vaše součty.



  1. Více výrazů $elemMatch pro shodu hodnot pole pomocí $all v MongoDB?

  2. VersionError:Na Node.js/Mongoose nebyla nalezena žádná chyba odpovídající dokumentu

  3. Nainstalujte CouchDB na Debian 9

  4. Připojte NodeJS k MongoDB Droplet