Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

147
Vistas
Se ingresaron datos incorrectos en la escritura masiva

Estoy escribiendo datos masivos en monogdb usando golang. Supongamos que tenemos los siguientes datos

 [ { id:1, name:"abc" } { id:2, name:"cde" } ....upto 1000 ]

para guardar estos datos, estoy haciendo una operación de escritura masiva en esto usando el siguiente código

 mongoSession, ctx := config.ConnectDb("myFirstDatabase") defer mongoSession.Disconnect(ctx) var operations []mongo.WriteModel operationA := mongo.NewInsertOneModel() getCollection := mongoSession.Database("myFirstDatabase").Collection("transactions") for k, v := range transaction { operationA.SetDocument(transaction[k]) operations = append(operations, operationA) fmt.Println(operationA) } bulkOption := options.BulkWriteOptions{} // bulkOption.SetOrdered(true) _, err = getCollection.BulkWrite(ctx, operations, &bulkOption)

operations son del tipo []mongo.WriteModel en for loop. Estoy agregando el único documento único a las operaciones, pero por otro lado, cuando verifico en mongodb que todos los documentos están allí, solo hay un último documento escrito 1000 veces. en mongodb. Indique qué código de línea es incorrecto en el fragmento anterior.

¡Gracias por adelantado!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Está haciendo referencia a la misma variable y actualizándola nuevamente, por lo que después de la iteración, solo tiene los últimos registros * la cantidad de veces que se ejecutó el ciclo.

operationA.SetDocument(transaction[k]) establecerá el valor nuevamente n nuevamente en la misma variable, lo que dará como resultado que solo se use el último valor. operations = append(operations, operationA)

 for k, v := range transaction { var operationA := mongo.NewInsertOneModel() // create variable with local scope to fix the issue operationA.SetDocument(transaction[k]) operations = append(operations, operationA) fmt.Println(operationA) }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda