Mongodb V 4.0
Desejo restringir a função de um usuário permitindo apenas novas inserções na coleção. Seja como um novo documento ou como um anexo ao documento. Eu não quero que o usuário possa atualizar (substituir) campos no documento, mas atualizar/(anexar/adicionar) está bem. Existe alguma boa estratégia lá fora para isso. Minhas duas opções agora são:
Crie duas coleções. Restrinja uma e permita atualizações completas na outra, assim que todas as atualizações estiverem completas, copie/mova o documento de uma coleção para outra.
Alternativa 2) limitar as funções apenas ao operador update.$push, que é um tipo de acréscimo ao operador de matriz. Eu não encontrei uma maneira de fazer isso a partir de agora.
As funções e permissões de servidor do MongoDB (como no MongoDB 4.0) não fornecem o nível de granularidade que você procura. No entanto, acho que esse nível de controle é muito melhor tratado na lógica do aplicativo.
Por exemplo, mesmo que fosse possível limitar o acesso de gravação ao
$push
operador , existem opções adicionais$slice
que podem fazer com que os elementos de matriz existentes sejam removidos.Em vez de fornecer acesso direto ao MongoDB, recomendo fornecer uma API para inserções e atualizações. Você pode implementar qualquer validação e filtragem necessária em seus endpoints de API.
Você também pode considerar a implementação de uma abordagem de controle de versão para rastrear o histórico de modificações em documentos individuais para poder auditar ou reverter as alterações, se necessário. Há uma grande série de posts no blog Ask Asya com exemplos e considerações comuns: