Enriquecimento de documentos e atualizações de esquemas
Avalie esse Tutorial
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.
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 }
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.
1 const { db } = await connectToDatabase(); 2 const 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.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 }
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 .