Tengo un conjunto de datos grande y variable en MongoDB , en el que hay documentos con campos numéricos. Debido a algún problema en la importación de datos, algunos de estos campos terminaron en el tipo de int32 datatype y algunos están en int64 datatype .
Necesito convertirlos todos a int32. Dado que muchos de los campos son documentos/matriz anidados, no puedo usar MongoChef o RoboMongo para editar el campo y reemplazar toda la colección.
¿Cuál es mi próxima mejor opción? ¿Necesitaría escribir un script que recorra cada documento/campo y los encasille explícitamente en NumberInt() ? Podría hacer esto en PHP or Python , pero me preguntaba si hay alguna manera de hacerlo sin escribir código adicional.
¿Hay alguna magia de mongoshell que se pueda hacer? Agradecería si algún Mongo Masters puede darme alguna idea.
Para cualquiera que busque hacer esto y venga aquí. Tu puedes correr
db.foo.find().forEach(doc => { const newBar = bar.valueOf() db.foo.update({ "_id" : doc._id }, { "$set" : { "bar" : newBar } }) }) en la concha de mongo . Esto podría no ser factible en colecciones grandes. La clave es usar .valueOf() en Int64 . Es posible que desee verificar que esto no se desborde