sql >> Base de Datos >  >> NoSQL >> MongoDB

Marco de agregación de Mongo:¿cuál es el nivel de bloqueo de la operación $out de la última etapa?

Siempre hay un cierto nivel de bloqueo que, dependiendo de su versión de MongoDB, es probable que sea una colección o un nivel de base de datos más antiguo, o incluso posiblemente un nivel de documento con el motor de almacenamiento WiredTiger. El $out sin embargo, produce escrituras, por lo que los documentos individuales se generan desde la canalización y no todos de una sola vez, por lo que cada actualización es atómica por documento.

Incluso el comando mapReduce tiene esta opción , donde puede establecer "nonAtomic" como una condición en la que la colección de salida de mapReduce exhibirá el mismo comportamiento.

Lo único a tener en cuenta con $out eliminará todos los documentos (no reemplazará ningún índice existente) de una colección, ya que esa etapa se ejecuta cuando se usa el modo "reemplazar". Por lo tanto, intentar leer o escribir desde una colección dirigida con el conjunto "reemplazar" es muy probable que falle (o produzca resultados inesperados) mientras la operación de agregación está en progreso.

Las otras limitaciones relacionadas con las colecciones fragmentadas y las colecciones limitadas se indican en la documentación.