簡體   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