Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

152
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!