换句话说,两者之间有区别吗?
db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )
和
db.eventlog.createIndex( { "lastModifiedDate": -1 }, { expireAfterSeconds: 3600 } )
?
docs 似乎没有提及与此相关的任何内容。
最佳答案
没关系。
使用单个字段索引 - 顺序无关紧要。如果它们以升序排列在一起,它们也会以降序排列在一起。
TTL 的工作原理
//find the expireAfterSeconds value from collection indexes
var expireAfterSeconds = db.eventlog.getIndexes().filter(function(i){
return i.hasOwnProperty('expireAfterSeconds');
})[0].expireAfterSeconds;
// epoch time
var startTime = new Date(1970,0,1);
// end time
var endTime = new Date(Date.now() - expireAfterSeconds*3600);
db.eventlog.remove({lastModifiedDate: { $gt: startTime, $lte: endTime }});
引用: ttl.cpp source
完整的 TTL 解释:http://hassansin.github.io/working-with-mongodb-ttl-index
关于mongodb - MongoDB TTL 索引的排序方向重要吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57940067/