繁体   English   中英

在 MongoDB 中插入带有随机数据的文档

[英]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()迭代集合并添加值,然后,所有值的种子都不相同。

请注意,使用mongoosemongo 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM