Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

449
Visualizações
El valor predeterminado de bulk.insert (doc) no se puede insertar MongoDB nodejs

He insertado 100k registros, he subido registros por lotes con éxito. Pero, si uso bulk.insert(doc) , el valor predeterminado no se inserta con mongoose y Nodejs. como el campo createdAt y updatedAt como valor predeterminado no insertado. Intento agregar las opciones setDefaultsOnInsert: true bulk.insert sin opción para agregar el valor. Actualmente, agregué mi código. Por favor, ayúdame para avanzar.

código

 let data = req.body; var bulk = callDispositionModel.collection.initializeOrderedBulkOp(); var counter=0 data.forEach(doc1 => { bulk.insert(doc1); if (counter % 5000 == 0) { bulk.execute(); bulk = callDispositionModel.collection.initializeUnorderedBulkOp(); counter = 0; } counter++ }) if (counter > 0) { bulk.execute(function(err,result) { if(err){ console.log(`err `, err) }else{ console.log(`result `, result) return res.send({success: true, message:'data uploaded successfully') } }); }

Esquema o Modelo

 let dispositionSchema = new mongoose.Schema({ name : {type: String, default: null}, mobile : {type : String, default: null}, remarks : {type: String, default:null}, duration: {type : String, default: null}, amount : {type : Number, default: 0}, date : {type : String, default: null}, time : {type : String, default: null}, createdAt: {type: Date, default: Date.now }, updatedAt: {type: Date, default: Date.now } }); const disposition = mongoose.model('disposition', dispositionSchema); export default disposition;

Datos

Se inserta los datos en mongodb

 { "_id" : ObjectId("6098e6d007e2804b9c1f8317"), "name" : "senthil", "amount" : 0 } { "_id" : ObjectId("6098e6d007e2804b9c1f8316"), "name" : "periyas", "amount" : 0 }

Pero, he esperado la salida.

Datos esperados

 { "_id" : ObjectId("6098e6d007e2804b9c1f8317"), "name" : "senthil", "amount" : 0, "mobile" : null, "remarks" : null, "createdAt": "2021-05-07T13:55:34.233Z" }, { "_id" : ObjectId("6098e6d007e2804b9c1f8316"), "name" : "periyas", "mobile" : null, "remarks" : null, "createdAt": "2021-05-07T13:55:34.233Z" }
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Hay una solicitud de soporte de inserción masiva en mongoose github , y lea uno de los comentarios del moderador:

Los métodos de API initializeUnorderedBulkOp() e initializeOrderedBulkOp() , que están "en desuso" por mongodb. Ha sido reemplazada por la API bulkWrite() , que es parte de la especificación CRUD central de MongoDB y, por lo tanto, se implementa mucho más ampliamente. En particular, mongoose tiene una función Model.bulkWrite() a partir de 4.9.0 que tiene validación, conversión, promesas y despoblación de referencias.

Puedes usar bulkWrite() algo como:

 let data = req.body; let bulk = []; data.forEach((doc1) => { bulk.push({ "insertOne": { "document": doc1 } }); if (bulk.length === 5000) { callDispositionModel.bulkWrite(bulk).then((result) => {}); bulk = []; } }) if (bulk.length > 0) { callDispositionModel.bulkWrite(bulk).then((res) => { console.log(res.insertedCount); return res.send({success: true, message: 'all data uploaded successfully'}) }); }
over 4 years ago · Santiago Trujillo Relatório

0

Cambio

 let dispositionSchema = new mongoose.Schema({ name : {type: String, default: null}, mobile : {type : String, default: null}, remarks : {type: String, default:null}, duration: {type : String, default: null}, amount : {type : Number, default: 0}, date : {type : String, default: null}, time : {type : String, default: null}, createdAt: {type: Date, default: Date.now }, updatedAt: {type: Date, default: Date.now } });

Para

 let dispositionSchema = new mongoose.Schema({ name : {type: String, default: null}, mobile : {type : String, default: null}, remarks : {type: String, default:null}, duration: {type : String, default: null}, amount : {type : Number, default: 0}, date : {type : String, default: null}, time : {type : String, default: null}, createdAt: {type: Date, default: Date.now }, updatedAt: {type: Date, default: Date.now } }, { timestamps: { createdAt: 'createdAt' , updatedAt: 'updatedAt'} });

Más detalle aquí

over 4 years ago · Santiago Trujillo Relatório

0

ahora puede configurar una opción de marcas de tiempo en el esquema para que Mongoose maneje esto por usted:

 var dispositionSchema = new Schema({..}, { timestamps: true });
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda