MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Estrutura de agregação do Mongo:qual é o nível de bloqueio da operação $out do último estágio?


Há sempre um certo nível de bloqueio que, dependendo da sua versão do MongoDB, é provável que seja uma coleção ou um nível de banco de dados mais antigo, ou até mesmo um nível de documento com o mecanismo de armazenamento WiredTiger. O $out no entanto, produz em gravações, portanto, documentos individuais são gerados a partir do pipeline e não todos de uma só vez, portanto, cada atualização é atômica por documento.

Até mesmo o comando mapReduce tem esta opção , onde você pode definir "nonAtomic" como uma condição em que a coleção de saída de um mapReduce exibirá o mesmo comportamento.

A única coisa que você deve saber com $out removerá todos os documentos (não substituirá nenhum índice existente) de uma coleção à medida que esse estágio for executado ao usar o modo "substituir". Portanto, tentar ler ou gravar de uma coleção direcionada com o conjunto "substituir" provavelmente falhará (ou produzirá resultados inesperados) enquanto a operação de agregação estiver em andamento.

As outras limitações relacionadas a coleções fragmentadas e coleções limitadas são observadas na documentação.