Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
Eliminar todos los registros de más de 3 meses desde la fecha actual Mongodb node.js

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" }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

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);
about 4 years ago · Juan Pablo Isaza Denunciar

0

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

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda