web-dev-qa-db-fra.com

Mongoose: quelles sont les différences entre Model.create et Collection.insert

Je souhaite effectuer un travail d’insertion de lot dans MongoDB et j’ai trouvé deux méthodes pour mangouste:

Une méthode consiste à utiliser insert:

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

Collection.insert(dataArr)

et un autre moyen est Model.create:

Model.create(dataArr)

les deux peuvent terminer le travail d'insertion par lot, mais quelle est la différence entre eux?

Lequel est le plus efficace?

16
hh54188

Dans Mongoose, il existe Model.create et Collection.insert (ce dernier ne fait pas strictement partie de Mongoose, mais du pilote MongoDB sous-jacent).

Selon le développeur Mongoose, ils sont fondamentalement les mêmes lorsqu'ils sont appelés avec un ensemble de documents, bien que regarder le code me laisse penser qu'il existe des différences subtiles (warning: je n'ai pas regardé le code that alors je me trompe peut-être sur ce qui suit):

  • utiliser Model.create appellera tous les validateurs/hooks déclarés sur votre schéma;
  • Model.create effectue un .save pour chaque document du tableau, ce qui entraîne des appels à la base de données N (où N correspond au nombre de documents du tableau); Collection.insert effectue un grand appel de base de données; 
26
robertklep

Ils signifient vaguement la même chose. Vous pouvez utiliser l'un ou l'autre.

0
Himansh