Хорошо, у меня есть коллекция электронных писем людей. Я хочу эффективно искать домен электронной почты без изменения существующих данных.
В настоящее время я могу быстро найти имя пользователя SUPER, так как это сканирование регулярных выражений, основанное на префиксе, моя коллекция имеет размер около 1 ГБ + и мой сервер не очень мощный. У меня есть указатель "Электронная почта". Быстрый запрос выглядит примерно так:
db.emails.find({"Email": {'$regex':'^johnsmith'}})
Мой индекс прост и выглядит так: db.emails.createIndex({ Email: 1 })
Однако, если я попробуйте найти домен, Мне нужно использовать сканирование регулярных выражений без префиксов, например , но это приводит к запросу, который по-прежнему использует индекс, но занимает примерно в 10-20 раз больше времени:
db.emails.find({"Email": {'$regex':'sampledomain.com'}})
Я пробовал использовать суффикс вместо такого префикса, но все равно так медленно:
db.emails.find({"Email": {'$regex':'sampledomain.com&'}})
Я не уверен, есть ли какой-то индекс, который я могу создать только для доменной части электронного письма, но я новичок в mongoDB, поэтому любые советы будут оценены.