решаемая. Просто измените db.test.ensureIndex (['name']) => на db.test.ensureIndex ({'name': 1});
Я сегодня тестировал MongoDB. У меня есть тестовая коллекция с 100 000 документов. Каждый документ имеет такую структуру {_id: 123123, имя: 'foo123123'}
Тестовый код, написанный на PHP
set_time_limit(0);
ini_set('display_errors', 1);
$mongo = new Mongo("mongodb://127.0.0.1:27017");
$db = $mongo->test;
$collection = $db->test;
$start = microtime(true);
for($i=0; $i<10000; $i++){
$obj = $collection->findOne(array('name'=>'foo'.$i));
}
$end = microtime(true);
var_dump($end-$start);
Первый тест без индекса в поле имени - 21 секунда
Чем я добавляю индекс
db.test.ensureIndex ([ 'имя']);
db.test.getIndexes ();
[
{
"v": 1,
"ключ": {
"_id": 1
},
"ns": "test.test",
"name": " id "
},
{
"v": 1,
"ключ": [
"название"
],
"ns": "test.test",
"имя": "0_"
}
]
И повторить тест. И снова получил 21 секунду. Почему монго не использует индекс в моем случае?