Como alimentar um MongoDB database com dados falsos
Avalie esse Tutorial
Você já lidou com um projeto do MongoDB e precisou preencher seu MongoDB database com dados falsos para fornecer valores iniciais para pesquisas, demonstrações, prova de conceitos etc.? Eu sou suspeito para falar, mas já tive que propagar (seed) um MongoDB database muitas vezes.
Antes de mais nada, o que é propagação de banco de dados? A propagação (seeding) do banco de dados é a propagação inicial de um banco de dados com dados. Esse é um processo no qual um conjunto inicial de dados é fornecido a um banco de dados quando ele está sendo instalado.
Este código de exemplo usa uma única coleção de dados falsos de IoT (que usei para modelar para meu projeto IoT Kitty Litter Box). No entanto, você pode alterar a forma do documento modelo para atender às necessidades do seu aplicativo. Estou usando falser.js para criar os dados falsos. Consulte a documentação se quiser fazer alterações. Você também pode adaptar esse script para semear dados em várias coleções ou bancos de dados, se necessário.
Estou salvando meus dados em um banco de dados MongoDB Atlas. É a maneira mais fácil de colocar um MongoDB database em funcionamento. Você precisará obter seu URI de conexão MongoDB antes de executar este script. Para obter informações sobre como conectar seu aplicativo ao MongoDB, confira os Docs.
Muito bem, agora que já concluímos a configuração, vamos ao código!
1 /* mySeedScript.js */ 2 3 // require the necessary libraries 4 const faker = require("faker"); 5 const MongoClient = require("mongodb").MongoClient; 6 7 function randomIntFromInterval(min, max) { // min and max included 8 return Math.floor(Math.random() * (max - min + 1) + min); 9 } 10 11 async function seedDB() { 12 // Connection URL 13 const uri = "YOUR MONGODB ATLAS URI"; 14 15 const client = new MongoClient(uri, { 16 useNewUrlParser: true, 17 // useUnifiedTopology: true, 18 }); 19 20 try { 21 await client.connect(); 22 console.log("Connected correctly to server"); 23 24 const collection = client.db("iot").collection("kitty-litter-time-series"); 25 26 // The drop() command destroys all data from a collection. 27 // Make sure you run it against proper database and collection. 28 collection.drop(); 29 30 // make a bunch of time series data 31 let timeSeriesData = []; 32 33 for (let i = 0; i < 5000; i++) { 34 const firstName = faker.name.firstName(); 35 const lastName = faker.name.lastName(); 36 let newDay = { 37 timestamp_day: faker.date.past(), 38 cat: faker.random.word(), 39 owner: { 40 email: faker.internet.email(firstName, lastName), 41 firstName, 42 lastName, 43 }, 44 events: [], 45 }; 46 47 for (let j = 0; j < randomIntFromInterval(1, 6); j++) { 48 let newEvent = { 49 timestamp_event: faker.date.past(), 50 weight: randomIntFromInterval(14,16), 51 } 52 newDay.events.push(newEvent); 53 } 54 timeSeriesData.push(newDay); 55 } 56 collection.insertMany(timeSeriesData); 57 58 console.log("Database seeded! :)"); 59 client.close(); 60 } catch (err) { 61 console.log(err.stack); 62 } 63 } 64 65 seedDB();
Depois de executar o script acima, não deixe de conferir seu banco de dados para garantir que seus dados tenham sido distribuídos corretamente. Esta é a aparência do meu banco de dados após a execução do script acima.
Quando seus dados falsos de propagação estiverem no MongoDB database, está tudo pronto! Parabéns!
Há muitos motivos pelos quais você pode querer semear seu MongoDB database, e preencher um MongoDB pode ser fácil e divertido sem exigir ferramentas ou frameworks sofisticados. Conseguimos automatizar essa tarefa usando o MongoDB, falser.js e Node.js. Teste e me fale o que achou! Está com dificuldades para semear seu MongoDB database? Gostaríamos muito de falar com você. Participe da discussão nos fóruns da MongoDB Community.