Meteor mongo ExpireAfterSeconds issue

Hello,
I’m trying to implement a functionality where every document after being added is deleted after ~30 minutes.

I’ve tried adding this into my project

Meteor.startup(() => {

  Collection._ensureIndex({createdAt: 1}, {expireAfterSeconds: 1800});
});

However, it does not delete in 30 minutes, it takes it roughly 1-2 minutes to delete, and it deletes everything. Any idea why?

Is createdAt definitely a date field (like createdAt: new Date())?

1 Like

This is what I have

Meteor.methods({
  addRCData(name, cmbLvl, risk, world, isRCer, key) {
    if (!isRCer) {
     isRCer = "false";
		}
			
			
			
	Crafters.insert({
     name: name,
     createdAt: new Date(),
     cmbLvl: parseInt(cmbLvl),
	 risk: parseInt(risk),
	 world:parseInt(world),
	 isRCer:isRCer
	}
	);

	this.unblock();
	

	
  }
});

Meteor.startup(() => {

  Crafters._ensureIndex({createdAt: 1}, {expireAfterSeconds: 1800});
});

However it deletes in approx 2 minutes.

This is literally all I have.

Solved it differently.

	var currentDate = new Date (),
    expireDate = new Date (currentDate);
expireDate.setMinutes ( currentDate.getMinutes() + expireMin );

	
			
	Crafters.insert({
     name: name,
     createdAt: currentDate,
	 expireAt: expireDate,
     cmbLvl: parseInt(cmbLvl),
	 risk: parseInt(risk),
	 world:parseInt(world),
	 isRCer:isRCer
	}
	);
Meteor.setInterval((function() {
Crafters.remove({expireAt: {$lte: new Date()}});
}), 1200);