を使用していない私は、コレクション内の次のインデックスを持っています。でも、単純なクエリがインデックスを利用していない、しかし、複合インデックスに対して実行されているいくつかの実行速度の遅いクエリをうまくしようとモンゴはインデックス
db.JobStatusModel.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "jobs.JobStatusModel"
},
{
"v" : 1,
"key" : {
"peopleId" : 1,
"jobId" : 1
},
"name" : "peopleId_jobId_compounded",
"ns" : "jobs.JobStatusModel"
},
{
"v" : 1,
"key" : {
"jobId" : 1
},
"name" : "jobId_1",
"ns" : "jobs.JobStatusModel",
"background" : true
},
{
"v" : 1,
"key" : {
"peopleId" : 1,
"disInterested" : 1
},
"name" : "peopleId_1_disInterested_1",
"ns" : "jobs.JobStatusModel",
"background" : true
}
]
:
db.JobStatusModel.find({ jobId : '1f940601ff7385931ec04dca88c853dd' }).explain(true)
{
"cursor" : "BtreeCursor jobId_1",
"isMultiKey" : false,
"n" : 221,
"nscannedObjects" : 221,
"nscanned" : 221,
"nscannedObjectsAllPlans" : 221,
"nscannedAllPlans" : 221,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 1,
"nChunkSkips" : 0,
"millis" : 1,
"indexBounds" : {
"jobId" : [
[
"1f940601ff7385931ec04dca88c853dd",
"1f940601ff7385931ec04dca88c853dd"
]
]
},
"allPlans" : [
{
"cursor" : "BtreeCursor jobId_1",
"isMultiKey" : false,
"n" : 221,
"nscannedObjects" : 221,
"nscanned" : 221,
"scanAndOrder" : false,
"indexOnly" : false,
"nChunkSkips" : 0,
"indexBounds" : {
"jobId" : [
[
"1f940601ff7385931ec04dca88c853dd",
"1f940601ff7385931ec04dca88c853dd"
]
]
}
}
],
"server" : "mongo3.pilot.dice.com:27017",
"filterSet" : false,
"stats" : {
"type" : "FETCH",
"works" : 222,
"yields" : 1,
"unyields" : 1,
"invalidates" : 0,
"advanced" : 221,
"needTime" : 0,
"needFetch" : 0,
"isEOF" : 1,
"alreadyHasObj" : 0,
"forcedFetches" : 0,
"matchTested" : 0,
"children" : [
{
"type" : "IXSCAN",
"works" : 222,
"yields" : 1,
"unyields" : 1,
"invalidates" : 0,
"advanced" : 221,
"needTime" : 0,
"needFetch" : 0,
"isEOF" : 1,
"keyPattern" : "{ jobId: 1.0 }",
"isMultiKey" : 0,
"boundsVerbose" : "field #0['jobId']: [\"1f940601ff7385931ec04dca88c853dd\", \"1f940601ff7385931ec04dca88c853dd\"]",
"yieldMovedCursor" : 0,
"dupsTested" : 0,
"dupsDropped" : 0,
"seenInvalidated" : 0,
"matchTested" : 0,
"keysExamined" : 221,
"children" : [ ]
}
]
}
}
私たちは、私はそれだけで私のフィールドがインデックス化されている場合でも、索引スキャンを行うことができないという意味出力から"indexOnly" : false,
を取得しています出力から見ることができるように。クエリがインデックスに対してのみ実行されていることを確認するにはどうすればよいですか?