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.