Det finns alltid en viss nivå av låsning som beroende på din MongoDB-version antingen sannolikt är insamling eller på äldre databasnivå, eller till och med möjligen dokumentnivå med WiredTiger-lagringsmotorn. $out
ger dock efter för skrivningar, så individuella dokument matas ut från pipelinen och inte alla på en gång, så varje uppdatering är atomär per dokument.
Till och med mapReduce-kommandot har det här alternativet , där du kan ställa in "nonAtomic" som ett villkor där utdatasamlingen för en mapReduce kommer att uppvisa samma beteende.
En sak att vara medveten om med $out
kommer att ta bort alla dokument (inte ersätta några befintliga index) från en samling eftersom det steget körs när "ersätt"-läget används. Så ett försök att läsa eller skriva från en samling riktad med "ersätt"-uppsättningen kommer mycket sannolikt att misslyckas (eller ge oväntade resultat) medan aggregeringsoperationen pågår.
Övriga begränsningar relaterade till fragmenterade samlingar och täckta samlingar anges i dokumentationen.