sql >> Base de Datos >  >> NoSQL >> MongoDB

¿No puede actualizar la propiedad createdAt en mongoose?

Dado que algunos de los documentos se crearon cuando timestamps la opción se estableció en falso (este es el valor predeterminado) mongoose no conocerá esas marcas de tiempo. Por lo tanto, item._id.getTimestamp() volverá indefinido.

Lo que puede hacer es recrear las entradas donde createdAt no existe. Mongoose generará automáticamente las marcas de tiempo y las establecerá en la marca de tiempo actual, si la opción está habilitada:

    const profilesWithoutCreated = await Profile.find({createdAt: {$exists: false}}).exec();
    const timeStampExtract = [];
    let newProfile;
    for (const profile of profiles) {
       newProfile = new Profile(profile);
       newProfile.createdAt = profile._id.getTimestamp();
       const savedProfile = await newProfile.save();
       timeStampExtract.push(savedProfile._id.getTimestamp());
    }