2015-02-07 6 views
0

그래서 나는이 인덱스지수는

db.contact.ensureIndex(
{ 
    'first_name':1, 
    'last_name':1, 
    'company_name':1, 
    'title':1, 
    'email':1, 
    'phone_number':1, 
    'state':1, 
    'list_id':1 
}); 

를 사용하지 않을

db.contact.find(
       { 
        $or: [ 
          {'first_name':/sales/i}, 
          {'last_name':/sales/i}, 
          {'company_name':/sales/i}, 
          {'title':/sales/i}, 
          {'email':/sales/i}, 
          {'phone_number':/sales/i}, 
          {'state':/sales/i} 
        ] 
       }).explain(); 

출력 :

{ 
    "cursor" : "BasicCursor", //Btree Index not being used !? 
    "isMultiKey" : false, 
    "n" : 0, 
    "nscannedObjects" : 0, 
    "nscanned" : 0, 
    "nscannedObjectsAllPlans" : 0, 
    "nscannedAllPlans" : 0, 
    "scanAndOrder" : false, 
    "indexOnly" : false, 
    "nYields" : 0, 
    "nChunkSkips" : 0, 
    "millis" : 0, 
    "server" : "", 
    "filterSet" : false 
} 
+0

각 항목에 대한 색인 생성은 다음과 같은 해결책으로 보입니다. http://stackoverflow.com/a/6875645/2805783 – donquixote

답변

1

주어진 문서 :

(1){first_name: 'sales', last_name: 'something', company_name: 'something'}, 
(2){first_name: 'something', last_name: 'sales', company_name: 'something'}, 
(3){first_name: 'something', last_name: 'something', company_name: 'sales'} 

결과에서 모두 가져오고 싶습니다 mongodb가 {first_name : 1, last_name : 1, company_name : 1}) 색인을 사용하고 있다면이 색인에서 first_name 이후 자동으로 2와 3을 기록하지 않습니다. 두 가지 경우가 다릅니다. 따라서 나머지 문서를 얻으려면 모든 문서를 검색해야합니다.

ps

빈 콜렉션에 대해 쿼리를 실행 한 것 같습니다.