sql >> Database >  >> NoSQL >> MongoDB

Mongo-aggregatieraamwerk:wat is het slotniveau van de $out-operatie in de laatste fase?

Er is altijd een bepaald niveau van vergrendeling dat, afhankelijk van uw MongoDB-versie, waarschijnlijk een verzameling of een ouder databaseniveau is, of zelfs mogelijk documentniveau met de WiredTiger-opslagengine. De $out levert echter wel schrijfbewerkingen op, dus individuele documenten worden uit de pijplijn uitgevoerd en niet allemaal in één keer, dus elke update is atomair per document.

Zelfs de opdracht mapReduce heeft deze optie , waar u "nonAtomic" kunt instellen als een voorwaarde waarbij de uitvoerverzameling van een mapReduce hetzelfde gedrag vertoont.

Het enige waar je op moet letten bij $out zal alle documenten verwijderen (geen bestaande indexen vervangen) uit een verzameling zoals die fase wordt uitgevoerd bij gebruik van de "vervangen" modus. Het is dus zeer waarschijnlijk dat een poging om te lezen of te schrijven uit een verzameling met de set "vervangen" mislukt (of onverwachte resultaten oplevert) terwijl de aggregatiebewerking aan de gang is.

De andere beperkingen met betrekking tot shard-collecties en gecapte collecties worden vermeld in de documentatie.




  1. Dezelfde taak meerdere keren uitgevoerd

  2. Hoe de datum op te halen uit een MongoDB ObjectId met behulp van SQL

  3. Hoe een privéberichtensysteem bij te houden met MongoDB?

  4. Rails Mongoid-modelqueryresultaat retourneert verkeerde informatie over maat/lengte/aantal, zelfs bij gebruik van limiet