[英]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.