Mongoose: какие различия между Model.create и Collection.insert

Я хочу выполнить работу вставки в MongoDB, и я нашел два способа в мангусте:

Один из способов - использовать insert:

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

Collection.insert(dataArr)

а другой способ - Model.create:

Model.create(dataArr)

оба могут завершить задание вставки партии, но какая разница между ними?

Какой из них более эффективен?

Ответы

Ответ 1

В Mongoose есть Model.create и Collection.insert (последнее не строго часть Mongoose, но лежащего в основе драйвера MongoDB).

Согласно разработчику Mongoose, они в основном то же самое при вызове с массивом документов, хотя просмотр кода заставляет меня думать, что есть тонкие различия ( предупреждение: я не очень хорошо смотрел на код, поэтому я мог ошибаться в следующем):

  • с помощью Model.create вызовет любые валидаторы/крючки, объявленные в вашей схеме;
  • Model.create делает .save для каждого документа в массиве, что приводит к N вызовам базы данных (где N - количество документов в массиве); Collection.insert выполняет один большой вызов базы данных;