Ich programmiere einen Webservice, in dem Benutzer einen Benutzernamen auswählen können, bei dem die Groß- und Kleinschreibung nicht beachtet werden muss. Ich möchte ihnen jedoch erlauben, eine Groß- und Kleinschreibung ihres Benutzernamens zu beachten.
Was ist der beste Weg, beim Einfügen zu überprüfen, dass der Benutzername keine Groß- und Kleinschreibung unterscheidet? Ich sehe derzeit 2 Möglichkeiten, dies zu tun:
Gibt es einen besseren Weg?
Das Speichern des ursprünglich eingegebenen Benutzernamens und einer kanonischen Version (Kleinbuchstaben für Ihre App) ist völlig in Ordnung. Stellen Sie nur sicher, dass das kanonische Feld in Ihrem Modell aktualisiert wird, wenn der Benutzername gesetzt ist, und überprüfen Sie, ob der spezifische Index des kanonischen Felds Einschränkungen enthält.
Ein anderes Szenario, in dem diese Lösung (ursprüngliches und kanonisches Feld) sinnvoll ist, sind Artikel, in denen derselbe Titel wiederverwendet werden kann, aber der Slug (für URLs) eindeutig sein muss.
MongoDB 3.4 enthält jetzt die Möglichkeit, einen Index ohne Beachtung der Groß- / Kleinschreibung zu erstellen. Es wird erstellt, indem eine Sortierung mit der Stärke 2 angegeben wird.
Wahrscheinlich ist es am einfachsten, eine Sortierung für die Datenbank selbst vorzunehmen. Dann erben alle Abfragen diese Kollatierung und verwenden sie:
%Vor%Oder Sie können dies auf Indexbasis tun:
%Vor%Und benutze es so:
%Vor%Weitere Informationen: Ссылка
Es sieht so aus, als ob mongodb die Groß- / Kleinschreibung-abhängige Indizierung von der Version 3.4 (die bald veröffentlicht wird) unterstützt. Sehen Sie sich dieses Ticket und die Dokumentation von Kollationierung .
In dem Beispiel, das wir vom erwähnten Ticket erhalten haben, sehen wir, dass die Verwendung von collation
mit einer Stärke von 2 in createIndex
und find
eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchführt:
Die Indizierung hat damit nichts zu tun, die Indizierung dient dazu, das Suchen (Suchen) schneller zu machen.
%Vor%Siehe Ссылка
Tags und Links mongodb