Пожалуйста, посмотрите на следующий пример. Мне кажется, что запрос должен быть покрыт индексом {a: 1}
, однако explain()
дает мне indexOnly: false
. Что я делаю неправильно?MongoDB не использует даже самый простой индекс
> db.foo.save({a: 1, b: 2});
> db.foo.save({a: 2, b: 3});
> db.foo.ensureIndex({a: 1});
> db.foo.find({a: 1}).explain();
{
"cursor" : "BtreeCursor a_1",
"nscanned" : 6,
"nscannedObjects" : 6,
"n" : 6,
"millis" : 0,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"a" : [
[
1,
1
]
]
}
}
Он использует индекс, как показано курсором '' BtreeCursor'. Есть, по-видимому, шесть документов - есть ли что-то о других, если это случайно вызывает такое поведение? – WiredPrairie
Я думаю, что ваша интерпретация 'indexOnly' отключена, см. Http://docs.mongodb.org/manual/applications/indexes/#indexes-covered-queries –