我想知道检查用户名是否已注册的最佳做法是什么。例如,我注册为Peter,我想阻止其他用户使用:
$username = 'Peter';
$db->users->count(['username' => new MongoDB\BSON\Regex('^'.$username.'\\b', 'i')]);
或者我应该为此目的存储2个版本的用户名,原始版本和一个小写版本?
$username = strtolower('Peter');
$query = $db->users->count(['username_lowercase' => $username]);
if ($query > 0) {
echo 'This username is already used';
}
还是有其他方法吗?
答案 0 :(得分:1)
关于绩效,最好的方法始终是测试,永远不会有偏见。
第三种方法是使用具有唯一约束的不区分大小写的索引。请参阅https://docs.mongodb.com/manual/core/index-case-insensitive/,我发现您的问题重复how to index a username in mongo with case-insensitively?