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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将多个项目项同时插入MongoDB集合?相关的知识,希望对你有一定的参考价值。

我有一个12K模型的集合,我想插入我的Mongo数据库。

Mongodb版本:4.0.3 Mongoose版本:5.3.4

我尝试使用InsertMany,创建,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。我正在使用Mongo 4.我不明白为什么不能只使用12K元素。

控制台不显示错误。

答案

最后我解决了使用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();

以上是关于如何将多个项目项同时插入MongoDB集合?的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的MongoDB - 如何将项目插入集合中的数组?

mongodb怎么插入多个文档

使用 javascript 将 2 个连接的集合插入到新集合 MongoDB

跨多个集合的 Mongodb 批量插入

如何使用 .forEach() 插入多个集合并检查它是不是存在

MongoDB快速入门教程 (4.3)