MongoDB fait probablement cela pour se défendre. Si vous dropDups
sur le mauvais champ, vous pourriez arroser l'intégralité du jeu de données et verrouiller la base de données avec des opérations de suppression (qui sont « aussi coûteuses » que les écritures).
Donc la première question est pourquoi créez-vous un index unique sur le id
champ ?
MongoDB crée un _id
par défaut champ automatiquement unique et indexé. Par défaut, MongoDB renseigne le _id
avec un ObjectId
, cependant, vous pouvez le remplacer par la valeur de votre choix. Donc, si vous disposez d'un ensemble prêt de valeurs d'ID, vous pouvez les utiliser .
Si vous ne pouvez pas réimporter les valeurs, copiez-les dans une nouvelle collection tout en modifiant id
dans _id
. Vous pouvez ensuite supprimer l'ancienne collection et renommer la nouvelle. (notez que vous obtiendrez un tas "d'erreurs de clé en double", assurez-vous que votre code les attrape et les ignore )