mongodb - 如何使用变量进行不区分大小写的查询?
问题描述
我的数据库中已经有一个用户名为Kevin的用户。我想阻止新用户在创建帐户时选择Kevin、kevin、KeViN等作为他们的用户名。如何修改我的查询以检查此类用户是否存在而忽略区分大小写?
def validate_username(self, username):
if db.users.find_one({"username":username}):
raise ValidationError("username is already taken")
解决方案
只需在用户名字段上放置一个“不区分大小写的唯一索引”。
如果有人输入现有的用户名,mongo 将抛出一个重复的密钥错误,您可以在代码中处理该错误并要求用户输入另一个用户名。
您可以像这样创建索引:
db.collection.createIndex(
{
username: "username_idx",
unique: true,
collation: {
locale: "en",
strength: 2
}
}
)
推荐阅读
- sql - 记录最新日期,其中日期来自连接表
- java - 当我想运行我的项目时,我收到 INI 错误
- php - 没有默认值的 laravel 字段
- javascript - Flask AJAX 请求返回空的 ImmutableMultiDict,同样的 AJAX 适用于 http.server
- javascript - 如果用户对 new ActiveXObject("Scripting.FileSystemObject") 回答“否”,代码中会看到什么?
- python - 如何将抓取的数据转换为要使用的列表
- android - 用户授予权限后如何使用 nativescript-oauth2 获取用户信息?
- ios - NSURLSessionDataTask 的最大并发实例数
- php - 获取未定义变量的登录自动化错误:错误
- c# - 试图从一个脚本中获取一个变量并应用到另一个