sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo eliminar _id en MongoDB y reemplazarlo con otro campo como clave principal?

En mongodb, cada documento debe ser único, por lo que necesita un campo único para usar como identificación. Si no proporciona uno, mongodb le proporcionará uno automáticamente. Sin embargo, si desea proporcionar identificaciones personalizadas por cualquier motivo (mejorar el rendimiento de las consultas es uno de ellos), puede hacerlo manualmente. Aquí van mis sugerencias:

Si está insertando un nuevo documento, puede configurar manualmente el campo _id como:

doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)

Pero cuando ya tiene un documento en la base de datos, ya no puede modificarlo. Lo que puedes hacer es hacer una copia del documento, guardar un nuevo documento con los mismos datos y borrar el anterior:

// Fetch the documents
docs = db.clients.find({})

docs.forEach((doc) => {
   //For each field you copy the values
   new_doc.field = doc.field
   new_doc._id = //YOUR ID FUNCTION 

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

   // remove the document with the old _id
   db.clients.remove({_id: doc._id})
}

Esta pregunta es similar a la siguiente:

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

Espero que mi respuesta haya sido útil