我目前正在创建一个python (金字塔)的网站,这需要用户注册和登录。系统允许用户选择用户名,可以是大写字母、小写字母和数字的混合。
当确保两个用户不会意外地共享相同的用户名时,问题就出现了,即在我的系统中,'randomuser‘应该与'randomUser’或'RandomUser‘相同。
不幸的是(在这种情况下),因为Mongo将字符串存储为区分大小写,所以可能会有许多用户使用相同的用户名。
我知道在mongo中查询不区分大小写的字符串的方法:
db.stuff.find_one({"foo": /bar/i});
然而,这在我使用pymongo的query方法中似乎不起作用:
username = '/' + str(username) + '/i'
response = request.db['user'].find_one({"username":username},{"username":1})
这是构建pymongo查询的正确方式吗(我想不是)?
只要创建或登录了用户帐户,就会使用此查询(因为它必须检查用户名是否存在于系统中)。我知道这不是最有效的查询,所以如果它只用于登录或帐户创建,那么它应该有关系吗?相反,更可取的做法是强制用户只选择小写用户名(完全不需要大小写敏感的查询)吗?
https://stackoverflow.com/questions/6266555
复制相似问题