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