尝试使用NodeJS通过POST请求将多个文档/记录插入MongoDB

时间:2017-12-30 20:11:55

标签: javascript node.js mongodb

我目前正在使用MongoDB和NodeJS构建API,我有以下代码块来执行POST请求:

// '/v1/restaurant/add' - Create
  api.post('/add', (req, res) => {
    let newRestaurant = new Restaurant();
    newRestaurant.name = req.body.name;

    newRestaurant.save(err => {
      if (err) {
        res.send(err);
      }
      res.json({ message: 'Restaurant saved successfully' });
    });
  });

我想做的是进行批量POST(即一次将多个文档/记录插入我的MongoDB)。如何修改我的代码来实现这一目标?

我道歉,但我是JavaScript / NodeJS的新手。

1 个答案:

答案 0 :(得分:2)

使用Mongoose有两种方法。

  1. Model.create() - 它接受要插入数据库的对象数组,并对数据库执行与要插入的项目数一样多的查询。如果您想要插入大量记录,这将是性能影响,但您可以获得Mongoose为每个记录调用save()方法的好处,这意味着您的prepost中间件功能将被触发。您可以详细了解方法here

  2. Model.insertMany() - 它还接受要插入的对象数组,但是在单个数据库操作中执行此操作。您获得了更好的性能,但交易的是save()函数不会为您要插入的任何项目运行(验证仍将在提交查询之前运行)。您可以详细了解insertMany() here

  3. 如果我必须一次插入少于50个项目并且我的模型很复杂且附加了create()个中间件功能,我个人会使用pre/post-save

    如果我的模型不复杂,我会使用insertMany()我必须定期插入超过50个项目。