Не съм сигурен дали това е грешка в MongoDB 2.6, но можете да погледнете тази статия относно създаването на индекс.
Следвайки този съвет, можете да опитате с тези индекси:
$col->ensureIndex(array('owner' => 1, 'ca' => -1));
$col->ensureIndex(array('ca' => -1, 'owner' => 1, 'perm.type' => 1));
$col->ensureIndex(array('perm.list' => 1, 'ca' => -1, 'owner' => 1));
Редактиране:
От вашето обяснение, ако тествате върху малки набори от данни, пълното събиране е бързо, защото MongoDB не е необходимо да минава през много документи. Трябва да опитате да направите тест с например 10 000 документа, за да видите реална разлика. Стойностите за вашите полета в индексите трябва да са достатъчно различни, за да осигурят селективност на индекса за вашите заявки (напр. не всички документи са от един и същи собственик).