MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment supprimer _id dans MongoDB et le remplacer par un autre champ en tant que clé primaire ?

Dans mongodb, chaque document doit être unique, vous avez donc besoin d'un champ unique à utiliser comme identifiant. Si vous n'en fournissez pas, mongodb vous en fournira un automatiquement. Cependant, si vous souhaitez donner des identifiants personnalisés pour une raison quelconque (l'amélioration des performances des requêtes étant l'une d'entre elles), vous pouvez le faire manuellement. Voici mes suggestions :

Si vous insérez un nouveau document, vous pouvez définir manuellement le champ _id comme :

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

Mais lorsque vous avez déjà un document dans la base de données, vous ne pouvez plus le modifier. Ce que vous pouvez faire, c'est faire une copie du document, enregistrer un nouveau document avec les mêmes données et effacer l'ancien :

// 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})
}

Cette question est similaire à la suivante :

Comment mettre à jour le _id d'un document MongoDB ?

J'espère que ma réponse a été utile