PHP MongoDB: неверный индекс выбран

У меня есть коллекция под названием «записи» с десятками миллионов документов. Имеет следующий индекс:

{
"v" : 2,
"key" : {
"added_on" : -1,
"instance" : 1,
"invisible" : -1,
"reviewed" : -1
},
"name" : "added_on_index",
"ns" : "test.records"},

Я пытаюсь выполнить следующую функцию, которая пытается определить самую старую запись, которая не проверена.

$collection = $this->mongo->getCollection('records');
$cursor = $collection->find(array('instance' => $instance, 'reviewed' => false), array('added_on' => 1))->sort(array('added_on' => 1))->limit(1);

Я могу ошибаться, но я прочитал в книге, из которой я узнал MongoDB, что это должно работать — при выполнении сортировки используйте поле сортировки в качестве первого поля индекса.

Однако в качестве выигрышного плана выбран другой индекс:

[winningPlan] => Array
(
[stage] => PROJECTION
[transformBy] => Array
(
[added_on] => 1
)

[inputStage] => Array
(
[stage] => SORT
[sortPattern] => Array
(
[added_on] => 1
)

[limitAmount] => 1
[inputStage] => Array
(
[stage] => SORT_KEY_GENERATOR
[inputStage] => Array
(
[stage] => FETCH
[inputStage] => Array
(
[stage] => IXSCAN
[keyPattern] => Array
(
[instance] => 1
[invisible] => 1
[reviewed] => 1
)

[indexName] => module_record_retrieval
[isMultiKey] =>
[multiKeyPaths] => Array
(
[instance] => Array
(
)

[invisible] => Array
(
)

[reviewed] => Array
(
)

)

[isUnique] =>
[isSparse] =>
[isPartial] =>
[indexVersion] => 2
[direction] => forward
[indexBounds] => Array
(
[instance] => Array
(
[0] => [ObjectId('58b28de67289ba94352c90bd'), ObjectId('58b28de67289ba94352c90bd')]
)

[invisible] => Array
(
[0] => [MinKey, MaxKey]
)

[reviewed] => Array
(
[0] => [false, false]
)

)

)

)

)

)

)

При попытке добавить подсказку (‘Added_on_index’) в функцию поиска, даже $ cursor-> объяснение () застревает на то, что, кажется, огромное количество времени.
Любая помощь в решении этой проблемы будет принята с благодарностью.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector