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 enN
llamadas a la base de datos (dondeN
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.