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?
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):
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; Ils signifient vaguement la même chose. Vous pouvez utiliser l'un ou l'autre.