Je ne sais pas s'il s'agit d'un bogue dans MongoDB 2.6 mais vous pouvez jeter un œil à cet article sur la création d'index.
Donc, en suivant ce conseil, vous pouvez essayer avec ces index :
$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));
Modifier :
D'après votre explication, si vous testez sur de petits ensembles de données, la collecte complète est rapide car MongoDB n'a pas besoin de parcourir beaucoup de documents. Vous devriez essayer de faire un test avec par exemple 10000 documents pour voir une réelle différence. Les valeurs de vos champs dans les index doivent être suffisamment différentes pour garantir la sélectivité de l'index pour vos requêtes (par exemple, tous les documents ne proviennent pas du même propriétaire).