Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

Enriquecimento de documentos e atualizações de esquemas

Jesse Hall2 min read • Published Jul 22, 2021 • Updated Aug 13, 2024
MongoDBEsquema
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Portanto, suas necessidades de negócios mudaram e há mais dados que precisam ser armazenados em um conjunto de dados existente. Não tenha medo! Com o MongoDB, isso não é problema.
Neste artigo, mostrarei como adicionar e preencher rapidamente campos adicionais em uma collection de banco de dados existente.

O Cenário

Digamos que você tenha um aplicativo do tipo "Netflix " e queira permitir que os usuários vejam quais filmes assistiram. Usaremos o banco de dados sample_mflix a partir dos conjuntos de dados de amostra disponíveis em um cluster MongoDB Atlas.
Aqui está o esquema existente para a collection de usuário no banco de dados sample_mflix:
1{
2 _id: ObjectId(),
3 name: <string>,
4 email: <string>,
5 password: <string>
6}

A SOLUÇÃO

Existem algumas maneiras de Go isso. Como o MongoDB tem um modelo de dados flexível, podemos apenas adicionar nossos novos dados aos documentos existentes.
1const { db } = await connectToDatabase();
2const collection = await db.collection(“users”).updateOne(
3 { _id: ObjectID(“59b99db9cfa9a34dcd7885bf”) },
4 {
5 $addToSet: {
6 moviesWatched: {
7 <movieId>,
8 <title>,
9 <poster>
10 }
11 }
12 }
13);
O operador$addToSet adiciona um valor a uma array evitando duplicatas. Se o campo referenciado não estiver presente no documento, $addToSet criará o campo de array e inserirá o valor especificado. Se o valor já estiver presente no campo, $addToSet não fará nada.
O uso de $addToSet nos impedirá de duplicar filmes quando eles forem assistidos várias vezes.

O resultado

Agora, quando um usuário for ao seu perfil, ele verá seus filmes assistidos.
Mas e se o usuário não tiver assistido a nenhum filme? O usuário simplesmente não terá esse campo em seu documento.
Estou usando Next.js para este aplicativo. Eu simplesmente preciso verificar se um usuário assistiu a algum filme e exibir as informações apropriadas de acordo.
1{ moviesWatched
2 ? "Movies I've Watched"
3 : "I have not watched any movies yet :("
4}

Conclusão

Devido ao modelo de dados flexível do MongoDB, podemos ter vários esquemas em uma coleção. Isso permite atualizar facilmente dados e campos em esquemas existentes.
Se você quiser saber mais sobre a validação de esquema, dê uma olhada na documentação de validação de esquema .
Eu adoraria ouvir seus comentários ou perguntas. Vamos conversar na MongoDB Community.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Arquitetura de microsserviços: implemente localmente com Java, Spring e MongoDB


Aug 29, 2024 | 4 min read
Início rápido

Criar, ler, atualizar e excluir documentos MongoDB com PHP


Sep 11, 2024 | 8 min read
Artigo

Queries que não diferenciam maiúsculas de minúsculas sem índices que não diferenciam maiúsculas de minúsculas


Oct 01, 2024 | 8 min read
Artigo

Um resumo dos antipadrões de projeto de esquema e como identificá-los


Oct 01, 2024 | 3 min read
Sumário
  • O Cenário