2017-02-10 48 views
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'; 
} 

還是還有其他方法嗎?

+0

我會使用正則表達式大小寫不敏感的匹配使用'我',我認爲這是您的工作的最佳做​​法,並將您從重複條目保存在數據庫中。 – Ibrahim

+0

@Ibrahim嗨,謝謝你的建議,那是對的,但表現如何? –

+1

我會使用第二個選項,以避免插入時重複條目和更好的性能...我不認爲在每個記錄上使用正則表達式對性能有好處 –

回答

相關問題