要檢查MongoDB索引是否生效,可以使用explain()方法查看查詢計劃。explain()方法返回查詢計劃的詳細信息,包括使用的索引、查詢優化器的決策以及執行時間等。
以下是檢查索引是否生效的步驟:
打開MongoDB shell。
使用find()方法執行查詢語句,并在查詢語句后面添加explain()方法。
例如,如果要檢查集合"mycollection"中字段"myfield"的索引是否生效,可以執行以下命令:
db.mycollection.find({ myfield: "value" }).explain()
如果在"inputStage"中出現"IXSCAN"(使用索引掃描)或者"IDHACK"(使用索引覆蓋掃描),則表示索引生效。
示例輸出:
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "mydatabase.mycollection",
"indexFilterSet" : false,
"parsedQuery" : {
"myfield" : {
"$eq" : "value"
}
},
"winningPlan" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"myfield" : 1
},
"indexName" : "myfield",
"isMultiKey" : false,
"direction" : "forward",
"indexBounds" : {
"myfield" : [
"[\"value\", \"value\"]"
]
}
}
},
...
},
...
}
在上述示例中,"winningPlan"部分顯示了索引的使用情況。"inputStage"中的"IXSCAN"表示使用了索引掃描。
注意:在生產環境中,使用explain()方法會執行查詢語句,這可能會對數據庫性能產生影響。因此,僅在需要檢查索引是否生效或優化查詢性能時才使用該方法。