我想知道检查用户名是否已注册的最佳做法是什么。例如,我注册为 Peter,我想阻止其他用户使用:
- 彼得
- 彼得
- 彼得
- 彼得
- 彼得
你已经明白了。 我是否应该在 PHP 中使用 MongoDB 对不区分大小写的查询使用正则表达式:
$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';
}
或者还有其他方法吗?
最佳答案
关于性能,最好的方法是始终进行测试并且永远不要有偏见。
第三种方法是使用具有唯一约束的不区分大小写的索引。参见 https://docs.mongodb.com/manual/core/index-case-insensitive/哦,我找到了你的问题的副本 how to index a username in mongo with case-insensitively?
关于php - 检查 MongoDB 中是否存在具有字段值的文档的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42167220/