2017-07-04 4 views
-1

Existe-t-il un moyen de modifier l'ID de tous les documents d'une collection Mongo avec spring mongo?Modifier l'ID du document mongo via le code source

Essayer de plusieurs façons j'ai eu des messages d'erreur comme:

the (immutable) field '_id' was found to have been altered to _id 

ou

Write errors: [BulkWriteError{index=0, code=16837, message='The _id field cannot be changed from {_id: "xyz"} to {_id: "zxy"}. 

Est-il possible de le faire?

Répondre

1

Non, vous n'êtes pas autorisé à mettre à jour le champ _id. Mais vous pouvez toujours définir un nouveau _id pour un document existant et supprimer l'ancien _id.

+0

Lorsque j'ai essayé d'utiliser la méthode replaceOne de BasicDBObject pour remplacer l'identifiant, cela me donne la deuxième erreur. Ou ce n'est pas ce que vous vouliez dire par définir un nouveau _id et supprimer le plus ancien? – neptune

+0

Je n'ai pas accès au pilote mongo maintenant, mais c'est ce à quoi je faisais allusion (non testé): BasicDBObject set = new BasicDBObject ("$ set", nouveau BasicDBObject ("_ id", 1234)); someCollection.update (someSearchQuery, ensemble); Pendant ce temps, récupérez le _id précédent et supprimez-le après avoir défini le nouveau. – sharath

+0

vérifiez ceci: https://stackoverflow.com/questions/23130161/how-to-update-the-id-field-in-a-mongodb-document – sharath