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

477
Vistas
cómo copiar o clonar un documento en MongoDB Collection usando mongoose y nodeJS

¿Cómo podemos clonar un documento en la misma colección o en una nueva con un nuevo _id?

aquí están los datos encontrados de la consulta proveniente de "doc" (res.query)

 [ { _id: new ObjectId("614d4766fb2600340fdb2904"), templateName: 'first template', _ref: '1632454502ref', owner: 'wxTWH8zqSwaIXPAVsjZoRCkvjx73', __v: 0 } ]

no funciona:

 TemplateInfo.find(req.query).exec(function (err, doc) { console.log("document", doc); var newdoc = new TemplateInfo(doc[0]); delete newdoc._id; //= mongoose.Types.ObjectId(); newdoc.save(); });

Esto funciona, pero los datos ahora son un objeto que no está insertado correctamente.

 TemplateInfo.find(req.query).exec(function (err, doc) { console.log("document", doc); var newdoc = new TemplateInfo(doc); newdoc._id = mongoose.Types.ObjectId(); newdoc.save(); });

resultados pero mal:

 { "0": { "_id": { "$oid": "614d4766fb2600340fdb2904" }, "templateName": "first template", "_ref": "1632454502ref", "owner": "wxTWH8zqSwaIXPAVsjZoRCkvjx73", "__v": 0 }, "_id": { "$oid": "614e34dbf288909e4713282b" }, "__v": 0 }

Funciona correctamente, sin embargo, necesito obtener mis datos de la consulta que no se ingresó manualmente

 const docData = { //_id: new ObjectId("614d4766fb2600340fdb2904"), templateName: "first template", _ref: "1632454502ref", owner: "wxTWH8zqSwaIXPAVsjZoRCkvjx73", __v: 0, }; TemplateInfo.find(req.query).exec(function (err, doc) { console.log("document", doc); var newdoc = new TemplateInfo(docData); newdoc._id = mongoose.Types.ObjectId(); newdoc.save(); });

los resultados son correctos pero los ingresé manualmente como una variable:

 { "_id": { "$oid": "614e378700b5bd9c7ba5ef37" }, "templateName": "first template", "_ref": "1632454502ref", "owner": "wxTWH8zqSwaIXPAVsjZoRCkvjx73", "__v": 0 }

Espero tener una copia de un documento con diferente _id en la colección mongoDB

 { _id: new ObjectId("614d4766fb2600340fdb2904"), templateName: 'first template', _ref: '1632454502ref', owner: 'wxTWH8zqSwaIXPAVsjZoRCkvjx73', __v: 0 }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El siguiente es el ejemplo para copiar/clonar documento en mongoose.

 const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/test'); const Cat = mongoose.model('Cat', { name: String }); Cat.find({_id:'614e440b771169c71a34dae9'}).exec(function (err, doc) { console.log("document", doc); doc.forEach(node => insertBatch(node)); }); function insertBatch( doc) { var id; id = mongoose.Types.ObjectId(); doc._id = id; console.log("doc", doc); const kitty = mongoose.model('Cat'); kitty.findOneAndUpdate({_id: id}, doc, {upsert: true}, function(err, doc1) { if (err) return res.send(500, {error: err}); console.log('Succesfully saved.'); }); }

"614e440b771169c71a34dae9" puede ser cualquier identificación en la colección

about 4 years ago · Juan Pablo Isaza 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