2013-04-13 6 views
-1

J'ai une requêteindexation MongoDB

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

J'ai mis headers.From comme indice. Maintenant, quelle partie de la requête va utiliser cet index? trouver une partie de la requête ou trier une partie de la requête?

Expliquer la sortie est

{ 
    "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" 
} 

Toute aide est appréciée !!!

+0

La requête n'inclut aucun élément indexé, juste 'headers.Date'. Il devrait utiliser l'index pour le tri, mais comme votre requête n'utilise pas d'index, cela fait déjà énormément de travail. Vous voudrez peut-être créer un index composé de 'headers.Date' et' headers.From' – WiredPrairie

Répondre

1

L'index est utilisé pour la partie de tri, pas pour la requête, car votre requête n'utilise pas les en-têtes.

+0

Merci lucia ... headers.From est utilisé dans trouver la requête aussi –

+1

Non, vous l'utilisez pour le projeter (le deuxième paramètre de find) mais pas pour la recherche, donc ce n'est pas dans la requête. db.collection.find (requête, projection) de http://docs.mongodb.org/manual/reference/method/db.collection.find/ –