Javascript 1000万条条目的MongoDB种子脚本需要30分钟

Javascript 1000万条条目的MongoDB种子脚本需要30分钟,javascript,mongodb,mongoose,mongoose-schema,seeding,Javascript,Mongodb,Mongoose,Mongoose Schema,Seeding,我有一个项目,我正在工作,我必须种子一个数据库与一千万随机行,我已经成功地做到了。然而,它需要大约30分钟来完成,这是预期的,但我知道它可能会更快。我想让它运行得更快,并找出一种方法,让它在10分钟内播种1000万个随机条目,最好是在仍然使用mongodb/mongoose的情况下。这是我当前的种子文件,有没有让它运行得更快的技巧?第一次在这里发布,仅供参考。谢谢 我使用'node database/seed.js'在终端中运行此文件 const db=require(“./index.js”

我有一个项目,我正在工作,我必须种子一个数据库与一千万随机行,我已经成功地做到了。然而,它需要大约30分钟来完成,这是预期的,但我知道它可能会更快。我想让它运行得更快,并找出一种方法,让它在10分钟内播种1000万个随机条目,最好是在仍然使用mongodb/mongoose的情况下。这是我当前的种子文件,有没有让它运行得更快的技巧?第一次在这里发布,仅供参考。谢谢

我使用'node database/seed.js'在终端中运行此文件

const db=require(“./index.js”);
const mongoose=需要(“mongoose”);
常量伪造者=要求(“伪造者”);
const productSchema=mongoose.Schema({
产品名称:字符串,
图像:字符串,
价格:字符串
});
让Product=mongoose.model(“Product”,productSchema);
异步函数seed(){
对于(设i=0;i<10000000;i++){
让name=faker.commerce.productName();
让image=faker.image.imageUrl();
让price=faker.commerce.price();
让项目=新产品({
产品名称:`${name}`,
图像:`${image}`,
价格:`$${price}`
});
等待项目
.save()
。然后(成功=>{})
.catch(err=>{});
}
}

种子()您可以创建一批可能有100万条记录,并可以使用insertMany函数将批量插入数据库。

使用

在所有类型的数据库中,插入/更新总是需要时间。尽量减少插入次数

每1000或循环插入一次

Model.insertMany(arr, function(error, docs) {});

如果我记性好的话,大容量API的记录数量是有限制的,但一般来说是的,这是大容量API的一个用例。。。不过,我不知道猫鼬在引擎盖下用的是什么。检查
包.json
。以前,每个“批处理到服务器”的文档数上限为1000个(对方法本身没有实际限制),但现在只要服务器为3.6或更高,这一上限就消失了。现在唯一真正的上限是每个“批量”请求的实际容量为16MB。您不想做“100万”的真正原因更多的是创建这样大的内存阵列。当然,几个较小的网络请求比一个较大的请求要好,或者当然比数百万个“小”请求要好