node.js mongodb insert mongoose

node.js - Mangosta: ¿cuáles son las diferencias entre Model.create y Collection.insert?



mongodb mongoose (3)

De acuerdo con lo que he leído, Collection.insert es una función del controlador mongoDB. Es mucho más rápido cuando se insertan grandes cantidades de datos, como millones o por el precio, que evita las validaciones de la mangosta.

tratar con cuidado

Quiero hacer un trabajo de inserción por lotes en MongoDB y encontré dos maneras en mongoose:

Una forma es usar insert :

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

Collection.insert(dataArr)

y otra forma es Model.create :

Model.create(dataArr)

ambos podrían completar el trabajo de inserción por lotes, pero ¿cuál es la diferencia entre ellos?

¿Cuál es más eficiente?


En Mongoose, hay Model.create y Collection.insert (este último no es estrictamente parte de Mongoose, sino del controlador MongoDB subyacente).

Según el desarrollador de Mongoose, son básicamente los mismos cuando se los llama con una serie de documentos, aunque mirar el código me hace pensar que hay diferencias sutiles ( advertencia : no he visto el código tan bien, por lo que podría estar equivocado sobre lo siguiente):

  • el uso de Model.create llamará a los validadores / ganchos declarados en su esquema;
  • Model.create realiza un .save para cada documento en la matriz, lo que resulta en N llamadas a la base de datos (donde N es el número de documentos en la matriz); Collection.insert realiza una llamada de base de datos grande;

Significan vagamente lo mismo. Puedes usar cualquiera de ellos.