21

我想在 MongoDB 中进行批量插入作业,我在 mongoose 中找到了两种方法:

一种方法是使用insert

dataArr = [
   {
       id: "",
       name: ""
   }
   {
       id: "",
       name: ""
   }
]

Collection.insert(dataArr)

另一种方法是Model.create

Model.create(dataArr)

两者都可以完成批量插入作业,但它们之间有什么区别?

哪个效率更高?

4

3 回答 3

37

在 Mongoose 中,有Model.createand Collection.insert(后者严格来说不是 Mongoose 的一部分,而是底层 MongoDB 驱动程序的一部分)。

根据 Mongoose 开发人员的说法,当使用一组文档调用它们时,它们基本上是相同的,尽管查看代码让我觉得存在细微的差异(警告:我没有仔细查看代码所以我可能会弄错关于以下):

  • usingModel.create将调用在您的架构上声明的任何验证器/挂钩;
  • Model.create对数组中的每个文档执行一次.save,从而导致N数据库调用(其中N是数组中的文档数);Collection.insert执行一个大型数据库调用;
于 2013-10-31T09:58:00.977 回答
1

根据我所阅读的内容,Collection.insert 是 mongoDB 驱动程序的一个功能,它在插入大量数据(如数百万左右)时要快得多,但代价是它绕过了 mongoose 验证。

小心轻放

于 2019-02-15T14:04:31.780 回答
0

它们大致意思相同。您可以使用其中任何一个。

于 2019-02-17T04:49:34.480 回答