MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como remover _id no MongoDB e substituir por outro campo como chave primária?


No mongodb cada documento deve ser único, então você precisa de um campo único para ser usado como id. Se você não fornecer um, o mongodb fornecerá um para você automaticamente. No entanto, se você quiser fornecer IDs personalizados por qualquer motivo (melhorar o desempenho da consulta, sendo um deles), poderá fazê-lo manualmente. Aqui vão minhas sugestões:

Se você estiver inserindo um novo documento, poderá definir manualmente o campo _id como:
doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)

Mas quando você já tem um documento no banco de dados, não pode mais modificá-lo. O que você pode fazer é fazer uma cópia do documento, salvar um novo documento com os mesmos dados e apagar o antigo:
// 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 questão é semelhante à seguinte:

Como atualizar o _id de um documento do MongoDB?

Espero que minha resposta tenha sido útil