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());
}