3
我在想什麼是檢查用戶名是否已經註冊的最佳做法。比如我註冊了彼得,我想阻止其他用戶使用:檢查MongoDB中是否存在具有字段值的文檔的最佳做法是什麼?
- 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';
}
還是還有其他方法嗎?
我會使用正則表達式大小寫不敏感的匹配使用'我',我認爲這是您的工作的最佳做法,並將您從重複條目保存在數據庫中。 – Ibrahim
@Ibrahim嗨,謝謝你的建議,那是對的,但表現如何? –
我會使用第二個選項,以避免插入時重複條目和更好的性能...我不認爲在每個記錄上使用正則表達式對性能有好處 –