2016-09-19 4 views
0

У меня структуру, как показано нижеИндекс MongoDB и поиск разделенных запятыми значения

{ 
    "name": "", 
    "age": 35, 
    "hobbies": "gardening, skiing, horse riding, soccer", 
    "Address": { 
    "addrline 1": "", 
    "addrline 2": "", 
    "City": "", 
    "Zip": "" 
    } 
} 

Хотелось бы, чтобы произвести поиск на основе хобби. например для ввода «лыжи» следует вернуть этот Документ. У меня около 80 тыс. Записей. Что было бы лучшей стратегией индексирования для элемента «хобби», чтобы он быстро возвращал результат.

Нужно ли искать «хобби» только по шаблону регулярного выражения на основе строк или есть ли другой способ ускорения поиска данных?

ответ

4

Лучше дизайн будет хранить хобби как массив

"hobbies": ["gardening", "skiing", "horse riding", "soccer"] 

Затем, вы можете использовать $ в запросе, чтобы соответствовать любой один или несколько хобби. Создайте индекс в ключе хобби для более быстрого запроса.

+0

Полностью согласен с @DhruvPathak, возможно, вы можете запустить скрипт или команду и включить значение, разделенное запятой, в массив. Затем добавьте многокамерный индекс в хобби, таким образом вам не придется делать запрос регулярного выражения, регулярное выражение неэффективен при использовании индексов для более быстрого поиска. –