Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Atualizei autor mas nao refletiu na collection de livros

Ola, boa tarde!

Realizei a atualização de um autor, porém ao consultar a collection de livros, a alteração não refletiu.

Veja no exemplo abaixo:

Autor atualizado

{
        "_id": "6748adc8b66764d5365230b1",
        "nome": "Heather McCallum, Angela Hunt",
        "nacionalidade": "Norte Americana"
    }

Autor que retorna em livros

[
    {
        "_id": "6748c112bf08b8e7124ddc8d",
        "titulo": "Deixe Deus surpreender você",
        "editora": "Vida de mulher",
        "preco": 175,
        "paginas": 37.4,
        "autor": {
            "nome": "Augusto Cury",
            "nacionalidade": "Brasileiro",
            "_id": "6748adc8b66764d5365230b1"
        }
    }
]

O que posso fazer para resolver esse problema?

1 resposta
solução!

Bom dia, Paulo! Tudo certo?

O que você está enfrentando é um problema comum quando se trabalha com referências em bancos de dados NoSQL como o MongoDB.

Aparentemente, a atualização do autor não está se refletindo na coleção de livros porque, provavelmente, a informação do autor está armazenada diretamente dentro de cada documento do livro. Isso significa que, quando você atualiza o autor, precisa também atualizar todos os documentos de livros que referenciam esse autor.

Aqui estão algumas sugestões para resolver esse problema:

  1. Atualização Manual: Você pode realizar uma atualização manual em cada documento da coleção de livros que contém o autor modificado. Isso pode ser feito através de um script que percorre todos os documentos da coleção de livros e atualiza o autor correspondente.

    Exemplo de script usando o MongoDB:

    db.livros.updateMany(
      { "autor._id": "6748adc8b66764d5365230b1" },
      { $set: { "autor.nome": "Heather McCallum, Angela Hunt", "autor.nacionalidade": "Norte Americana" } }
    );
    
  2. Estrutura de Referência: Considere alterar a estrutura do seu banco de dados para utilizar referências ao invés de embutir o documento do autor dentro do documento do livro. Dessa forma, você mantém uma única fonte de verdade para os dados do autor e evita a necessidade de atualizações múltiplas.

    Exemplo de como poderia ser:

    {
      "_id": "6748c112bf08b8e7124ddc8d",
      "titulo": "Deixe Deus surpreender você",
      "editora": "Vida de mulher",
      "preco": 175,
      "paginas": 37.4,
      "autorId": "6748adc8b66764d5365230b1"
    }
    

    Com essa estrutura, você precisaria buscar os dados do autor separadamente, mas garantiria que qualquer atualização no autor se refletisse automaticamente em todos os livros.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.