Saltar al contenido

¿Cómo actualizar el _id de un documento MongoDB?

Basta ya de buscar por internet porque has llegado al lugar necesario, poseemos la solución que necesitas pero sin complicaciones.

Solución:

No puedes actualizarlo. Tendrás que guardar el documento usando un nuevo _idy, a continuación, elimine el documento anterior.

// store the document in a variable
doc = db.clients.findOne(_id: ObjectId("4cc45467c55f4d2d2a000002"))

// set a new _id on the document
doc._id = ObjectId("4c8a331bda76c559ef000004")

// insert the document, using the new _id
db.clients.insert(doc)

// remove the document with the old _id
db.clients.remove(_id: ObjectId("4cc45467c55f4d2d2a000002"))

Para hacerlo para toda su colección, también puede usar un bucle (basado en el ejemplo de Niels):

db.status.find().forEach(function(doc) 
    doc._id=doc.UserId; db.status_new.insert(doc);
);
db.status_new.renameCollection("status", true);

En este caso, UserId era la nueva identificación que quería usar

En caso de que desee cambiar el nombre de _id en la misma colección (por ejemplo, si desea prefix algunos _id):

db.someCollection.find().snapshot().forEach(function(doc)  
   if (doc._id.indexOf("2019:") != 0) 
       print("Processing: " + doc._id);
       var oldDocId = doc._id;
       doc._id = "2019:" + doc._id; 
       db.someCollection.insert(doc);
       db.someCollection.remove(_id: oldDocId);
   
);

si (doc._id.indexOf(“2019:”) != 0) {… necesario para evitar un bucle infinito, ya que forEach selecciona los documentos insertados, incluso a través de .instantánea() método utilizado.

Comentarios y calificaciones del artículo

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *