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 .

Saiba por que o MongoDB foi selecionado como um líder no 2024 Gartner_Magic Quadrupnt()
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
Artigo

Java x Kotlin: sintaxe diferente, mesmas possibilidades


Nov 25, 2024 | 5 min read
Tutorial

Como manter várias versões de um registro no MongoDB (atualizações 2024)


Aug 12, 2024 | 6 min read
Início rápido

Construindo o aplicativo Quakus com MongoDB e Panache


Dec 03, 2024 | 5 min read
Artigo

Paginations 2.0: Por que escolher o MongoDB


Jul 12, 2024 | 4 min read
Sumário
  • O Cenário