Ik weet niet zeker of dit een bug is in MongoDB 2.6, maar je kunt een kijkje nemen op dit artikel over het maken van indexen.
Dus als je dat advies volgt, kun je het proberen met deze indexen:
$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));
Bewerken:
Zoals je uitlegt, als je op kleine datasets test, is de volledige verzameling snel omdat MongoDB niet veel documenten hoeft te doorlopen. Probeer een test uit te voeren met bijvoorbeeld 10000 documenten om echt verschil te zien. Waarden voor uw velden in indexen moeten voldoende verschillend zijn om indexselectiviteit voor uw zoekopdrachten te garanderen (bijv. niet alle documenten zijn van dezelfde eigenaar).