2014-12-30 6 views
0

제 질문은 멀티 키 문서를 쿼리 할 때 MongoDB가 작동하는 방식에 관한 것입니다. { a: 1, b: 2, c: ['x','y','z'] }, { a:3, b: null, c: ['x','z'] } Mongodb - 멀티 키 인덱스 된 문서 쿼리

내 질문이있다 : db.<collection>.find({ b: null, c: 'x'})

을 그리고 내 인덱스는 다음과 같습니다 db.<collection>.ensureIndex({ c: 1 })

내 질문은 : 위의 쿼리의 경우 (즉, 요청

나는이 문서가 가정 cb) MongoDB가 어떻게 쿼리를 호출합니까? c에 대한 색인을 가지고 있거나, 단지 cb에 대한 색인만을 찾으려고합니까? 문이 cb이 포함 된 경우에도

+1

find() 후 .explain() 메서드를 사용하고 nscannedObjects 및 nscanned를 확인합니다. 그것은 당신이 인덱스 – Disposer

+0

의 사용을 확인하는 데 도움이됩니다 ... 그리고 nscannedObjects는 컬렉션의 크기입니다. 인덱싱 된 필드로 무언가를 얻으려면 컬렉션 전체를 거쳐야하는 이유는 무엇입니까? – refaelos

+1

나는 자신의 문서를 기반으로 테스트 케이스를 만들었고 두 개의 문서를 검색하기 위해 nscanned = 1을 얻었습니다. 이것은 인덱스를 사용한다는 것을 의미합니다. .explain()에서 커서를 살펴보고 인덱스를 사용하는 경우 커서는 "BtreeCursor c_1"과 같아야합니다. – Disposer

답변

0

감사 디스 포저

쿼리는 c의 인덱스를 찾습니다.