Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

497
Visualizações
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" }
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

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);
over 4 years ago · Santiago Trujillo Relatório

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

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda