Tengo una base de datos MongoDB con dos esquemas: usuarios y publicaciones. Solía verse así:
username: {type: String}, following: {type: [String], ref: 'users'} user_id: {type: String, ref: 'users'} comment: {type: String}Pero ahora he decidido cambiar los tipos de campos de referencia de String a ObjectId, así que ahora tengo:
username: {type: String}, following: {type: [Schema.Types.ObjectId], ref: 'users'} user_id: {type: Schema.Types.ObjectId, ref: 'users'} comment: {type: String}Pero los datos antiguos en la base de datos aún se almacenan como cadenas. ¿Cómo puedo migrar esos datos correctamente?
Uso Mongoose para consultar la base de datos desde mi código.
Debe usar model.find({}) para obtener todos los documentos de publicación y luego recorrer cada documento y actualizar cada documento
doc.user_id = mongoose.Types.ObjectId(doc.user_id); doc.save();Puede usar model.find({}) para obtener todos los documentos y recorrerlos y actualizarlos.
const media = await Media.find({}); media.forEach(async (item) => { const update = await Media.findOneAndUpdate( { _id: item._id }, { user: mongoose.Types.ObjectId(item.user) }, { upsert: true } ); });```