En mi aplicación, tengo registros de actividad de los usuarios almacenados en mi base de datos (mongoDB), dado que se recopilan muchos registros en 3 meses , quiero eliminar todos los registros de actividad que tengan más de 3 meses a partir de la fecha actual . Uso Node.js para mi backend. Quiero ejecutar esta función todos los días automáticamente . Por favor, ayúdame con esto.
Este es el modelo de registro
const logSchema = new mongoose.Schema( { activityType: { type: String, require: true, enum: { values: [ 'create', 'update', 'delete', 'login', 'logout', 'passwordReset', ], message: 'Wrong activity type!', }, }, activitySubject: { type: Object, require: true, }, activityPerformedUserId: { type: String, require: true, }, }, { timestamps: true } ); const Log = mongoose.model('log', logSchema); module.exports = Log;Así es como se ve mi documento de registro de actividad.
{ "_id": "62788f467a6d842face8a698", "activityType": "delete", "activitySubject": { "id": "627557836752492b6c7ff515", "name": "S Thomson", "nic": "78456123442" }, "activityPerformedUserId": "6276ab95eb9e634310ea37f8", "createdAt": "2022-05-09T03:49:26.510Z", "updatedAt": "2022-05-09T03:49:26.510Z" }Aquí sería como
const a = { "_id": "62788f467a6d842face8a698", "activityType": "delete", "activitySubject": { "id": "627557836752492b6c7ff515", "name": "S Thomson", "nic": "78456123442" }, "activityPerformedUserId": "6276ab95eb9e634310ea37f8", "createdAt": "2022-05-09T03:49:26.510Z", "updatedAt": "2022-05-09T03:49:26.510Z" }Prueba esto:
a.splice(a.findIndex(e => new Date(e.createdAt + 2592000000 ) > new Date()),1); console.log(a);La mejor característica de MongoDB que elimina el registro con precisión de nivel granular es TTL
Cree un campo en el que se eliminará todo el documento después de que haya pasado ese tiempo. Por ejemplo, si desea eliminar un registro en el día x, la hora y, el minuto z, establezca el valor del campo TTL en xyz .
En su caso, puede configurar el campo TTL en createdAt + 90 días, para que lo elimine después de 90 días del valor createdAt