首页 > 解决方案 > 如何使用变量进行不区分大小写的查询?

问题描述

我的数据库中已经有一个用户名为Kevin的用户。我想阻止新用户在创建帐户时选择KevinkevinKeViN等作为他们的用户名。如何修改我的查询以检查此类用户是否存在而忽略区分大小写?

def validate_username(self, username):
    if db.users.find_one({"username":username}):
        raise ValidationError("username is already taken")

标签: mongodbpymongo

解决方案


只需在用户名字段上放置一个“不区分大小写的唯一索引”。

如果有人输入现有的用户名,mongo 将抛出一个重复的密钥错误,您可以在代码中处理该错误并要求用户输入另一个用户名。

您可以像这样创建索引:

db.collection.createIndex(
    {
        username: "username_idx",
        unique: true,
        collation: {
            locale: "en",
            strength: 2
        }
    }
)

推荐阅读