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

Framework di aggregazione Mongo:qual è il livello di blocco dell'ultima fase dell'operazione $out?

C'è sempre un certo livello di blocco che, a seconda della versione di MongoDB, potrebbe essere una raccolta o un livello di database più vecchio, o anche un livello di documento con il motore di archiviazione WiredTiger. Il $out tuttavia cede alle scritture, quindi i singoli documenti vengono emessi dalla pipeline e non tutti in una volta, quindi ogni aggiornamento è atomico per documento.

Anche il comando mapReduce ha questa opzione , dove puoi impostare "nonAtomic" come condizione in cui la raccolta di output di mapReduce mostrerà lo stesso comportamento.

L'unica cosa da tenere presente con $out rimuoverà tutti i documenti (non sostituirà alcun indice esistente) da una raccolta poiché quella fase viene eseguita quando si utilizza la modalità "sostituisci". Quindi è molto probabile che il tentativo di leggere o scrivere da una raccolta indirizzata con "replace" set abbia esito negativo (o produca risultati imprevisti) mentre è in corso l'operazione di aggregazione.

Le altre limitazioni relative alle raccolte frammentate e alle raccolte limitate sono annotate nella documentazione.