Mangouste: quelles sont les différences entre le Modèle.de créer et de Collection.insérer
Je veux faire une insertion de lot de travail dans MongoDB et j'ai trouvé deux façons de la mangouste:
Une façon est d'utiliser insert
:
dataArr = [
{
id: "",
name: ""
}
{
id: "",
name: ""
}
]
Collection.insert(dataArr)
et une autre façon est Model.create
:
Model.create(dataArr)
à la fois complète le lot insérer travail, mais quelle est la différence entre eux?
Lequel est le plus efficace?
Je suis toujours un grand partisan du fait de la plongée et la traçabilité par le code. C'est l'un des plus grands avantages de l'open source.
Voir aussi cette réponse à une précédente question concernant les différences dans performance de ces deux approches.
Voir aussi cette réponse à une précédente question concernant les différences dans performance de ces deux approches.
OriginalL'auteur hh54188 | 2013-10-31
Vous devez vous connecter pour publier un commentaire.
Dans la Mangouste, il est
Modèle.créer
etde la Collection.insert
(le dernier n'est pas à proprement parler partie de la Mangouste, mais du sous-jacent MongoDB pilote).Selon la Mangouste développeur, ils sont fondamentalement la même lorsqu'il est appelé avec un éventail de documents, bien que regardant le code me fait penser qu'il y a de subtiles différences (avertissement: je n'ai pas regardé le code que bien, donc je peux me tromper sur ce qui suit):
Model.create
va appeler tous les validateurs/crochets sur votre déclaration de schéma;Model.create
un.save
pour chaque document dans le tableau, ce quiN
appels de base de données (oùN
est le nombre de documents dans le tableau);Collection.insert
effectue une grande base de données d'appel;Model.collection.insert
pistes de beaucoup plus rapide queModel.create
. Vous devriez le prendre en compte si faire des insertions. Voir stackoverflow.com/a/24848148/778272.Pouvez-vous donner un exemple vivant avec cette méthode. À l'aide de
Model.collection
dans mon code ne fait rien. La définition de votre collection dans le mongoos schéma avec {collection: 'monnom'} fonctionne, mais l'accès, il ne faut pas.Il y a une autre différence importante mérite d'être conscients.
Model.create
lors de la validation sera également convertir la chaîne de ObjectId est réelle ObjectId si le schéma spécifie que le type du champ, tandis queModel.collection.insert
ne le fait pas, il va insérer des chaînes comme de simples chaînes de caractères.bon point. Fondamentalement, à l'aide de la sous-jacentes MongoDB pilote de beaucoup de ce Mangouste offre sera contournée (ce qui explique pourquoi il est beaucoup plus rapide, mais il est quelque chose d'être conscient de).
OriginalL'auteur robertklep