我有一个12000个模型的集合,我想插入到我的Mongo数据库中。
Mongo数据库版本:4.0.3 猫鼬版本:5.3.4
我尝试使用InsertMany,create,save()插入forEach,但无法插入我的12K模型。
const ProductSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
id: {
type: String,
required: true
},
sku: {
type: String,
required: true
},
categoriesIds: [
{
type: String
}
]},
{
usePushEach: true, timestamps: true
});
const prodModel = new ProductModel({
name: prod.name,
id: prod.id,
sku: prod.sku,
categoriesIds: prod.categories
});
I have array of 12K productModel created and then I did:
ProductModel.insertMany(products, (error) => {
});
只有当数组的长度小于1K时,它才能正常工作。我从Mongo 3.6开始读到有关maxWriteBatchSize为100K的文章。我正在使用Mongo4。我不明白为什么不能只使用12K元素。
控制台没有显示错误。
答案 0 :(得分:1)
最后,我使用mongo驱动程序解决了javascript和批处理大小逻辑问题:
const batchSize = 1000;
const col = db.collection('products');
let batch = col.initializeUnorderedBulkOp();
for (let i = 0; i <= products.length; i += 1) {
if (products[i]) {
batch.insert(products[i]);
if (i % batchSize === 0) {
batch.execute();
batch = col.initializeUnorderedBulkOp();
}
}
}
return batch.execute();