[英]Automatic Random Test Data Generation of Documents for Seeding a MongoDB Database
[英]Insert documents with random data in MongoDB
早上好。
我正在嘗試編寫一些腳本以在 MongoDB 的集合中插入文檔。 問題是我需要數據是隨機的。 這是我的代碼:
async function run(service) {
try {
await client.connect();
const database = client.db("myDb");
const collection = database.collection("myEvents");
// create a filter to update all movies filtering the service
const filter = { service: service };
const updateDoc = {
$set: {
idIn: (Math.floor(Math.random() * 20) + 1) + 5,
idOut: Math.floor(Math.random() * 10) + 1
},
};
const result = await collection.updateMany(filter, updateDoc);
} finally {
await client.close();
}
}
let service = readline.question("Insert an id: ");
run(service).catch(console.dir);
這里數據被創建一次,然后使用相同的值更新集合中的所有文檔。 我需要用兩個不同的(IdIn 和 IdOut)值更新每個文檔。
提前致謝。
這里的問題是如何生成隨機數。 如果所有數字都基於同一個種子,則所有數字都相同。
因此,您必須使用forEach()
迭代集合並添加值,然后,所有值的種子都不相同。
請注意,使用mongoose
和mongo
forEach
並不相同。 使用mongo
你可以做collection.find().forEach(...)
。
使用mongoose
是這樣的:
model.find({}).then(doc =>
doc.forEach(element => {
element.idIn = (Math.floor(Math.random() * 20) + 1) + 5
element.idOut = Math.floor(Math.random() * 10) + 1
element.save()
}))
find
查詢是空的,因為您要更新每個文檔。 使用查詢返回的值(所有文檔),您可以使用forEach
一一迭代,並為每個計算一個隨機數並添加到 value。
然后將文檔保存到集合中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.