giovedì 4 dicembre 2014

MongoDB - Script per rigenerare _id

Alle volte capita che per sbaglio vengano inseriti dei valori non generati da mongo per _id.

es:

{"_id":1, "a":1},
{"_id":2, "a":3}.. etc..etc



Mongo non prevede l'unset del _id
uno script del genere

 db.events.update({},{$set : {_id:new ObjectId()}},{multi:true});

ritorna questo errore:

After applying the update to the document {_id: 4 , ...}, the (immutable) field '_id' was found to have been altered to _id: ObjectId('54801ec49103c90347485eaf')


il modo migliore è quello di prendere tutti i valori ribaltarli su una collection di appoggio (eliminando il vecchio _id) e rinominare la collection in quella sorgente.