В настоящее время я создаю веб-сайт в python (pyramid), который требует от пользователей регистрации и входа в систему. Система позволяет пользователям выбирать имя пользователя, которое может быть смесью заглавных букв, строчных букв и цифр.
Проблема возникает, когда убедитесь, что два пользователя случайно не используют одно и то же имя пользователя, то есть в моей системе "randomUser" должно быть таким же, как "RandomUser" или "randomuser".
К сожалению (в данном случае), поскольку Mongo хранит строки как чувствительные к регистру, потенциально может быть несколько пользователей с "одинаковым" именем пользователя.
Мне известен метод запроса манго для нечувствительных к регистру строк:
db.stuff.find_one({"foo": /bar/i});
Однако это, похоже, не работает в моем методе запросов с использованием pymongo:
username = '/' + str(username) + '/i'
response = request.db['user'].find_one({"username":username},{"username":1})
Является ли это правильным способом структурирования запроса для pymongo (я предполагаю, что нет)?
Этот запрос будет использоваться всякий раз, когда учетная запись пользователя будет создана или войдет в систему (поскольку она должна проверять, существует ли в системе имя пользователя). Я знаю, что это не самый эффективный запрос, так что имеет значение, если он используется только для входа в систему или создания учетной записи? Желательно ли вместо этого делать что-то вроде принуждения пользователей выбирать только нижестоящие имена пользователей (вообще отрицая необходимость в запросах без учета регистра)?