You cannot actually "update" an index definition. What you need to here is "delete" the index and then "re-create" it. So use .dropIndex()
first
myCollection.dropIndex({ "createdAt": 1 },function(err,result) { });
Then recreate with a new interval:
myCollection.ensureIndex(
{ "createdAt": 1 },
{ "expireAfterSeconds": 60 * 10 },
function(err,result) { }
);
As for when it updates, the mongod
service runs at an interval every 60 seconds an event you process a delete for any items where the effective date field ( i.e "createdAt" in this example ) is within the "expiry period" from the current time of the server.
So that means it does not matter if you drop the index and re-create it, as the existing server process will just run the same expiry query on each collection that has such an index defined on that interval clock.