2014-03-04 2 views
0

MongoDB 응용 프로그램을 작성 중이며 해당 쿼리에 문제가 있습니다. 매거진을 작성할 때 많은 쿼리를 재 작업 한 후에 이전에 다루었던 쿼리가 더 이상 인덱스에 포함되지 않는다는 것을 발견했습니다. 가능한 한 문제를 격리하기 위해 작업 세트를 추출하려고했지만 여전히 혼란 스럽습니다.MongoDB 인덱스가 간단한 쿼리를 처리하지 않습니다.

먼저, 새로운 (빈) 컬렉션, 나는 다음과 같은 문서에 삽입 : 다음

devdb> db.test.find() 
{ "_id" : ObjectId("53157aa0dd2cab043ab92c14"), "metadata" : { "created_by" : "bcheng" } } 
{ "_id" : ObjectId("53157aa6dd2cab043ab92c15"), "metadata" : { "created_by" : "albert" } } 
{ "_id" : ObjectId("53157aaadd2cab043ab92c16"), "metadata" : { "created_by" : "zzzzzz" } } 
{ "_id" : ObjectId("53157aaedd2cab043ab92c17"), "metadata" : { "created_by" : "thomas" } } 
{ "_id" : ObjectId("53157ab9dd2cab043ab92c18"), "metadata" : { "created_by" : "bbbbbb" } } 

을, 나는 'metadata.created_by'필드에 대한 인덱스를 생성 : 이제

devdb> db.test.getIndices() 
[ 
     { 
       "v" : 1, 
       "key" : { 
         "_id" : 1 
       }, 
       "ns" : "devdb.test", 
       "name" : "_id_" 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "metadata.created_by" : 1 
       }, 
       "ns" : "devdb.test", 
       "name" : "metadata.created_by_1" 
     } 
] 

필드를 기준으로 문서를 검색하려고 시도했습니다.

devdb> db.test.find({'metadata.created_by':'bcheng'},{'_id':0,'metadata.created_by':1}).sort({'metadata.created_by':1}).explain() 
{ 
     "cursor" : "BtreeCursor metadata.created_by_1", 
     "isMultiKey" : false, 
     "n" : 1, 
     "nscannedObjects" : 1, 
     "nscanned" : 1, 
     "nscannedObjectsAllPlans" : 1, 
     "nscannedAllPlans" : 1, 
     "scanAndOrder" : false, 
     "indexOnly" : false, 
     "nYields" : 0, 
     "nChunkSkips" : 0, 
     "millis" : 0, 
     "indexBounds" : { 
       "metadata.created_by" : [ 
         [ 
           "bcheng", 
           "bcheng" 
         ] 
       ] 
     }, 
     "server" : "localhost:27017" 
} 

정확한 색인이 사용되고 있으며 관련없는 d 문서를 스캔하는 중입니다. .hint(), limit() 또는 sort()의 존재에 관계없이, indexOnlyfalse으로 유지됩니다.

문서를 살펴보면 배열 요소에 대한 쿼리를 다루지는 못하지만 여기서는 해당되지 않습니다 (isMultiKeyfalse).

무엇이 누락 되었습니까? 이 동작에 대한 다른 이유가 있습니까 (예 : 부적합한 RAM, 디스크 공간 등)? 그렇다면 앞으로 어떻게 이러한 문제를 최선으로 진단 할 수 있습니까?

답변

1

현재 지원되지 않습니다. 이 Jira issue을 참조하십시오.

+0

글쎄, 확실히 그 질문에 답합니다. 빠른 답변 감사합니다! –

관련 문제