tipos - insertar varios documentos en mongodb
Duplicar un documento en MongoDB usando un nuevo_id (5)
En mongo shell: está bien
db.products.find().forEach( function(doc){db.products.insert(
{
"price":doc.price,
"name":doc.name,
"typeName":doc.typeName,
"image":doc.image
}
)} );
Ok, supongo que esta es una pregunta tonta y probablemente tiene una respuesta simple.
¿Cómo puedo duplicar un documento en MongoDB, cambiando el _id del nuevo?
Imagine que tiene el documento original:
> var orig = db.MyCollection.findOne({_id: ''hi''})
Y ahora quiero otro documento en la colección con _id ''bye''.
Puede asignar un nuevo ObjectId al documento de copia. En el caparazón de mongo
var copy = db.collection.findOne();
for (var i = 0; i< 30; i++){
copy._id = new ObjectId();
db.collection.insert(copy);
}
Puedes usar el siguiente código:
Ejecutar usando una sola línea:
db.collectionName.find({"_id" : ObjectId("5a4e47e0a21698d455000009")}).forEach(function(doc){var newDoc = doc; delete newDoc._id; db.collectionName.insert(newDoc); })
un formato estructural para la comprensión:
db.collectionName.find({"_id" : ObjectId("5a4e47e0a21698d455000009")}).forEach(function(doc){
var newDoc = doc;
delete newDoc._id;
db.collectionName.insert(newDoc);
})
Simplemente cambie la identificación y vuelva a insertar.
> db.coll.insert({_id: ''hi'', val: 1})
> var orig = db.coll.findOne({_id: ''hi''})
> orig._id = ''bye''
bye
> db.coll.insert(orig)
> db.coll.find()
{ "_id" : "hi", "val" : 1 }
{ "_id" : "bye", "val" : 1 }
Una pequeña mejora a la respuesta @ 689
var copy = db.collection.findOne({},{_id:0});
for (var i = 0; i< 30; i++){
db.collection.insert(copy);
}