如何将多个项目同时插入一个MongoDB集合中?

时间:2018-11-09 16:18:24

标签: node.js mongodb mongoose

我有一个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元素。

控制台没有显示错误。

1 个答案:

答案 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();