2013-04-13 3 views
-1

У меня есть запросMongoDB индексирование

db.messages.find({'headers.Date':{'$gt': new Date(2001,3,1)}},{'headers.From':1, _id:0}).sort({'headers.From':1}) 

я поставил headers.From как индекс. Теперь какая часть запроса будет использовать этот индекс? Вы можете найти часть запроса или отсортировать часть запроса?

Объяснить выход является

{ 
    "cursor" : "BtreeCursor headers.From_1", 
    "isMultiKey" : false, 
    "n" : 83057, 
    "nscannedObjects" : 120477, 
    "nscanned" : 120477, 
    "nscannedObjectsAllPlans" : 120581, 
    "nscannedAllPlans" : 120581, 
    "scanAndOrder" : false, 
    "indexOnly" : false, 
    "nYields" : 0, 
    "nChunkSkips" : 0, 
    "millis" : 250, 
    "indexBounds" : { 
     "headers.From" : [ 
      [ 
       { 
        "$minElement" : 1 
       }, 
       { 
        "$maxElement" : 1 
       } 
      ] 
     ] 
    }, 
    "server" : "Andrews-iMac.local:27017" 
} 

Любая помощь приветствуется !!!

+0

Запрос не содержит ничего проиндексированного, просто 'headers.Date'. Он должен использовать индекс для сортировки, но поскольку ваш запрос не использует индекс, он уже проделал огромную работу. Возможно, вы захотите создать составной индекс 'headers.Date' и' headers.From' – WiredPrairie

ответ

1

Этот индекс используется для части сортировки, а не для запроса, так как ваш запрос не использует заголовки. Из поля и вашего сортировки.

+0

Спасибо lucia ... headers.From также используется в поиске запроса –

+1

Нет, вы используете его для его проекта (второй параметр find), но не для поиска, так что это не в запросе. db.collection.find (запрос, проецирование) из http://docs.mongodb.org/manual/reference/method/db.collection.find/ –

Смежные вопросы