MongoDB и покрытие индекса по массивам возможно? - PullRequest
2 голосов
/ 18 августа 2011

Скажем, я добавил документ

db.search.save({terms:["10115","Berlin","Germany"]})

Я добавил индекс с помощью:

db.search.ensureIndex({terms:1})

при поиске по документам и проверке того, что выбран только индекс

db.search.find({terms:"Berlin"}, {terms:1,_id:0}).explain()

# note: causes the whole output of the array, which might cause some trouble?
# however, leaving it out doesn't change anything

Я бы ожидал в .explain ()

"indexOnly" : true

Курсор указывает, что монго использует индекс (BtreeCursor Terms_1).Поэтому мне интересно, может ли Монго выводить индексы массива, только касаясь индекса.

В конце я хотел бы сделать запрос, такой как:

db.search.find({terms:{$all:[/10115/i,/ger/i]}})

PS: Iпонимаю, что для последнего Regex может вызвать некоторые проблемы ... по крайней мере, это мое предположение.

Спасибо за ваш отзыв.

Приветствия

1 Ответ

2 голосов
/ 18 августа 2011

В настоящее время невозможно использовать индекс покрытия для массивов.Это связано с тем, что каждый элемент в массиве индексируется отдельно, поэтому в индексе нет записи, включающей весь массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...