sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongo aggregeringsramme:hvad er låseniveauet for den sidste fase $out-operation?

Der er altid et vist niveau af låsning, som afhængigt af din MongoDB-version enten sandsynligvis vil være indsamling eller på ældre databaseniveau, eller endda muligvis dokumentniveau med WiredTiger-lagringsmotoren. $out giver dog efter for skrivninger, så individuelle dokumenter udlæses fra pipelinen og ikke alle på én gang, så hver opdatering er atomisk pr. dokument.

Selv kommandoen mapReduce har denne mulighed , hvor du kan indstille "nonAtomic" som en betingelse, hvor outputsamlingen af ​​en mapReduce vil udvise den samme adfærd.

Den ene ting at være opmærksom på med $out vil fjerne alle dokumenter (ikke erstatte eksisterende indekser) fra en samling, da det trin udføres, når du bruger "erstat"-tilstanden. Så et forsøg på at læse eller skrive fra en samling rettet med "erstat"-sæt vil sandsynligvis mislykkes (eller give uventede resultater), mens aggregeringsoperationen er i gang.

De øvrige begrænsninger i forbindelse med shardede samlinger og begrænsede samlinger er noteret i dokumentationen.




  1. Kommandolinjeforespørgsel i Java

  2. Express JS Vis data efter ID

  3. hvordan dræber jeg inaktive redis-klienter

  4. Node Js:Redis-jobbet er ikke afsluttet efter at have afsluttet sin opgave