一个集合有两个索引:
{ date: 1 }
{ date: -1 }
和TTL 我删除了索引A,因为已经存在与索引B相同的索引,尽管它具有TTL且排序顺序相反。
Mongodb说:
TTL索引以与非TTL索引相同的方式支持查询。
相反的排序顺序无关紧要,因为mongodb可以沿任一方向遍历索引。
但是,根据$indexStats
,索引B并未使用,实际上,索引B并未使用,因为查询现在需要更长的时间才能执行。
为什么不使用索引B?
答案 0 :(得分:0)
Mongodb可以在一个字段上创建索引asc和desc。 例如:
> db.ttt.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 4,
"numIndexesAfter" : 5,
"ok" : 1
}
> db.ttt.createIndex( { "lastModifiedDate": -1 }, { expireAfterSeconds: 3600 } )
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 5,
"numIndexesAfter" : 6,
"ok" : 1
}
>
但是如果尝试重新创建索引,则无法更改索引。
您可以使用getIndexes()
查看索引,并使用dropIndex()
重新创建索引。
TTL索引也像非TTL索引一样工作。
为什么不使用索引B?
这符合您的查询和索引优化器。
如果您拥有更好的索引,那么当然不会使用更差的索引。
您可以向我展示有关您的查询和索引的更多信息。