我有這些指標的集合:mongodb在排序時不使用索引?
db.message.find({'keywords': {'$all': ['apple', 'banana']}})
.sort({msgid:-1})
.limit(30).explain()
:
> db.message.getIndexKeys()
[
{
"_id" : 1
},
{
"msgid" : 1
},
{
"keywords" : 1,
"msgid" : 1
}
]
和像
查詢db.message.find({'keywords': {'$all': ['apple', 'banana']}}).limit(30).explain()
正常工作與指數
{
"cursor" : "BtreeCursor keywords_1_msgid_1",
"nscanned" : 96,
"nscannedObjects" : 96,
...
}
但MSGID排序時
mongodb不再使用索引:
{
"cursor" : "BtreeCursor msgid_1 reverse",
"nscanned" : 1784455,
"nscannedObjects" : 1784455,
...
}
任何解決方案?
+1優秀的答案! – Petrogad
謝謝你,先生! –
加入反向索引確實有幫助。謝謝。 – Bearice