Quiero actualizar mi campo _id en uno de los documentos (que se muestra a continuación).
{ _id : ObjectId("586d9d5d23352af1a4aa05f7"), name: "Soham", age : 99, city : "XYZ" }
Así que ejecuté los siguientes pasos:
var doc = db.names.find({name:"Soham"}); doc._id = 111 ; -- 111 is not present in that collection for any document db.names.remove({_id:ObjectId("586d9d5d23352af1a4aa05f7")}); db.names.insert(doc);
Las primeras 3 líneas no arrojaron ningún error, pero en el momento en que ejecuté el comando de inserción, arrojó un error. ¿Alguien puede decirme qué está pasando?
¡¡¡Gracias por adelantado!!!
Está arrojando un error porque no puede actualizar el campo _id .
Para establecer una nueva identificación, primero encuentra el documento (usando findOne, ya que busca solo 1 documento), luego necesita crear un nuevo documento con una nueva identificación e insertarlo, luego podemos eliminar el anterior de forma segura:
var doc = db.names.find_one({name:"Soham"}); doc._id = 111 ; db.names.insert(doc); db.names.remove({_id:ObjectId("586d9d5d23352af1a4aa05f7")});