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

MongoDB 2.2 - Atualizando documento aninhado de matriz


Atualmente, não há como fazer isso usando uma operação de atualização regular pelos motivos que você observou.

A única solução que você pode usar no momento é adicionar versionamento ao seu documento e usar o bloqueio otimista lendo o documento, encontrando os elementos apropriados para modificar em seu aplicativo, alterando seus valores e, em seguida, usando um update que inclui a versão no documento lido (para que, se outro thread atualizasse o documento entre sua consulta e sua atualização, você não substituiria as alterações, mas teria que recarregar o documento e tentar novamente.

A estratégia de versionamento não precisaria ser baseada em todo o documento, você pode versionar os elementos do array de primeiro nível e então você seria capaz de atualizar apenas o sub-array que você estava preocupado (através de uma atualização com $set).