2017-02-10 3 views
3

Ich frage mich, was ist die beste Methode, um zu überprüfen, ob der Benutzername bereits registriert ist. Zum Beispiel melde ich mich als Peter und ich möchte anderen verhindern, dass Benutzer mit:Wie überprüft man am besten, ob ein Dokument mit Feldwert in MongoDB existiert?

  • PETER
  • Peter
  • Peter
  • Peter
  • Peter

du hast die Idee. Soll ich Regex für Groß- und Kleinschreibung Abfrage MongoDB in PHP:

$username = 'Peter'; 
$db->users->count(['username' => new MongoDB\BSON\Regex('^'.$username.'\\b', 'i')]); 

oder lagere ich zwei Versionen von Benutzername, die Originalversion und einer unteren Gehäuseversion für diesen Zweck?

$username = strtolower('Peter'); 
$query = $db->users->count(['username_lowercase' => $username]); 
if ($query > 0) { 
    echo 'This username is already used'; 
} 

oder gibt es einen anderen Ansatz?

+0

Ich würde regex case-insensitive Übereinstimmung mit 'i', ich denke, es ist die beste Praxis für Ihren Job, und speichert Sie aus doppelten Einträge in der Datenbank . – Ibrahim

+0

@Ibrahim Hallo, vielen Dank für den Vorschlag, das stimmt, aber was ist mit der Leistung? –

+1

Ich würde die zweite Option verwenden, um doppelte Einträge und bessere Leistung beim Einfügen zu vermeiden ... Ich glaube nicht, Regex auf jedem Datensatz wird für die Leistung gut sein –

Antwort

Verwandte Themen