Necesito insertar documentos de 10K lo más rápido posible, pero me lleva mucho tiempo.
Actualmente estoy usando Model.create([<huge array here>]) para hacer esto.
¿Ayudaría usar múltiples conexiones a la base de datos? Por ejemplo, ¿tiene 10 conexiones ahorrando 1K cada una?
Puede usar model.insertMany(doc, options) .
Algunas cosas a tener en cuenta a continuación.
10 conexiones suelen ser suficientes, pero depende en gran medida de su hardware. Abrir más conexiones puede ralentizar su servidor.
En algunos casos, la cantidad de conexiones entre las aplicaciones y la base de datos puede abrumar la capacidad del servidor para manejar las solicitudes.
Hay un par de opciones para insertMany que pueden acelerar la inserción.
[options.lean «Boolean» = false] si es verdadero, omite hidratar y validar los documentos. Esta opción es útil si necesita rendimiento adicional, pero Mongoose no validará los documentos antes de insertarlos.
[options.limit «Number» = null] esto limita el número de documentos que mongoose procesa (validación/casting) en paralelo, esto NO envía los documentos en lotes a MongoDB. Use esta opción si está procesando una gran cantidad de documentos y su aplicación se está quedando sin memoria.
Establecer opciones en writeConcern en opciones también puede afectar el rendimiento.
Si las aplicaciones especifican preocupaciones de escritura que incluyen la opción j, mongod reducirá la duración entre las escrituras del diario, lo que puede aumentar la carga de escritura general.
Utilice db.colección.insertMany([])
insertMany aceptará una matriz de objetos y esto se usa para realizar inserciones masivas.