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

Mongo agregační rámec:jaká je úroveň uzamčení operace $out poslední fáze?

Vždy existuje určitá úroveň zamykání, která v závislosti na vaší verzi MongoDB pravděpodobně bude sbírka nebo starší úroveň databáze, nebo dokonce možná úroveň dokumentu s úložištěm WiredTiger. $out se však zapisuje, takže jednotlivé dokumenty jsou výstupem z kanálu a ne všechny najednou, takže každá aktualizace je atomická pro každý dokument.

Dokonce i příkaz mapReduce má tuto možnost , kde můžete nastavit "nonAtomic" jako podmínku, kdy bude výstupní kolekce mapReduce vykazovat stejné chování.

U $out je třeba si uvědomit jednu věc odstraní všechny dokumenty (nenahradí žádné existující indexy) z kolekce, jak se tato fáze spustí při použití režimu "nahradit". Takže pokus o čtení nebo zápis z kolekce nasměrované sadou "nahradit" velmi pravděpodobně selže (nebo přinese neočekávané výsledky), když probíhá operace agregace.

Další omezení týkající se sharded kolekcí a omezených kolekcí jsou uvedena v dokumentaci.




  1. Meteor mongo aktualizuje vnořené pole

  2. Aktualizace vloženého dokumentu Mongoose

  3. AttributeError:objekt 'tuple' nemá žádný atribut 'insert'

  4. mongoose odstraní objekt z vnořeného pole