title: how does Mongodb index works?
body: <pre><code>I have a collection such as:
  {u'_id': ObjectId('5094cc44e3f0f827b3618918'),
    u'xxx': 0},
   {u'_id': ObjectId('5094cc44e3f0f827b3618919'),
    u'xxx': 1},
   {u'_id': ObjectId('5094cc44e3f0f827b361891a'),
    u'xxx': 2},
   {u'_id': ObjectId('5094cc44e3f0f827b361891b'),
    u'xxx': 3},
   {u'_id': ObjectId('5094cc44e3f0f827b361891c'),
    u'xxx': 4}
  ...
  </code></pre>
  
  <p>when I create index such as:</p>
  
  <pre><code>db.test.ensure_index([("_id",-1),("xxx",1)])
  db.test.ensure_index([("xxx",1)])
  </code></pre>
  
  <p>then,I use the explain such as:</p>
  
  <pre><code>db.test.find({"xxx":1}).sort("_id",-1).skip(5).limit(5).explain()
  
  result is:
  {u'allPlans': [{u'cursor': u'BtreeCursor _id_ reverse',
                  u'indexBounds': {u'_id': [[{u'$maxElement': 1},
                                             {u'$minElement': 1}]]},
                  u'n': 9,
                  u'nscanned': 34,
                 u'nscannedObjects': 34},
                 {u'cursor': u'BtreeCursor xxx_1',
                  u'indexBounds': {u'xxx': [[1, 1]]},
                  u'n': 34,
                  u'nscanned': 34,
                  u'nscannedObjects': 34},
                 {u'cursor': u'BtreeCursor _id_-1_xxx_1',
                  u'indexBounds': {u'_id': [[{u'$maxElement': 1},
                                             {u'$minElement': 1}]],
                                   u'xxx': [[1, 1]]},
                  u'n': 10,
                  u'nscanned': 38,
                  u'nscannedObjects': 10},
                 {u'cursor': u'BasicCursor',
                  u'indexBounds': {},
                  u'n': 16,
                  u'nscanned': 34,
                  u'nscannedObjects': 34}],
   u'cursor': u'BtreeCursor xxx_1',
   u'indexBounds': {u'xxx': [[1, 1]]},
   u'indexOnly': False,
   u'isMultiKey': False,
   u'millis': 1,
   u'n': 5,
   u'nChunkSkips': 0,
   u'nYields': 0,
   u'nscanned': 34,
   u'nscannedAllPlans': 140,
   u'nscannedObjects': 34,
   u'nscannedObjectsAllPlans': 112,
   u'scanAndOrder': True,
   u'server': u'ubuntu:27017'}
  </code></pre>
  
  <p>from n,nscanned and nscnnedObjects 's num,I think It should use u'BtreeCursor <em>id</em>-1_xxx_1' as cursor,but Why It use u'cursor': u'BtreeCursor xxx_1',?
      Can anyone give me some suggestion ?I have a little knowledge about the index optimize.</p>