So erstellen Sie einen MongoDB-Index ohne Berücksichtigung der Groß-/Kleinschreibung
In diesem Beitrag zeigen wir Ihnen, wie Sie Indizes ohne Berücksichtigung der Groß-/Kleinschreibung in MongoDB mithilfe von Sortierungen erstellen, einer neuen Funktion, die von MongoDB in Version 3.4 veröffentlicht wurde.
Was sind Indizes ohne Berücksichtigung der Groß-/Kleinschreibung?
Indexe ohne Berücksichtigung der Groß-/Kleinschreibung unterstützen Abfragen, die Zeichenfolgenvergleiche ohne Berücksichtigung der Groß-/Kleinschreibung durchführen, und mit der Unterstützung von Collation durch MongoDB 3.4 können diese jetzt erstellt werden. Die Sortierung gibt Ihnen die Möglichkeit, sprachspezifische Regeln für den Zeichenfolgenvergleich anzugeben. Da die früheren Versionen von MongoDB Collation nicht unterstützten, waren Sie darauf beschränkt, einen Indexvergleich mit Berücksichtigung der Groß-/Kleinschreibung durchzuführen. In den Szenarien, in denen die Groß-/Kleinschreibung nicht beachtet werden musste, bestand die einzige Option darin, alle Ihre Zeichenfolgen entweder in Groß- oder Kleinbuchstaben umzuwandeln/zu speichern und dann den Vergleich durchzuführen. Wie Sie sich vorstellen können, verursacht dies viel Ärger mit Abfragen und Indexoperationen.
Die Collation-Eigenschaft kann auf Sammlungsebene oder explizit beim Erstellen eines Index festgelegt werden.
-
Legen Sie die Sortierungseigenschaft auf Sammlungsebene fest
Wenn es auf Sammlungsebene festgelegt wird, muss es nicht bei jedem create-index-Befehl angegeben werden, da der Index die Sortierung der Sammlung erbt . Sofern nicht ausdrücklich während der Erstellung angegeben, ist einer Sammlung keine Sortierung zugeordnet. Sie können die Sortierungsdetails Ihrer Sammlung mit den folgenden Befehlen ermitteln:
>db.createCollection("test") >db.getCollectionInfos({name: test'}); [ { "name" : "test", "type" : "collection", "options" : { }, "info" : { "readOnly" : false }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.test" } } ]
-
Legen Sie die Sortierungseigenschaft fest, wenn Sie einen Index erstellen
So können Sie beim Erstellen einer Sammlung explizit eine Sortierung angeben:
>db.createCollection("test2", { collation: { locale: 'en_US', strength: 2 } } ); >db.getCollectionInfos({name: 'test2'}) [ { "name" : "test2", "type" : "collection", "options" : { "collation" : { "locale" : "en_US", "caseLevel" : false, "caseFirst" : "off", "strength" : 2, "numericOrdering" : false, "alternate" : "non-ignorable", "maxVariable" : "punct", "normalization" : false, "backwards" : false, "version" : "57.1" } }, "info" : { "readOnly" : false }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.test2", "collation" : { "locale" : "en_US", "caseLevel" : false, "caseFirst" : "off", "strength" : 2, "numericOrdering" : false, "alternate" : "non-ignorable", "maxVariable" : "punct", "normalization" : false, "backwards" : false, "version" : "57.1" } } } ]
-
Setzen Sie die Sortierungseigenschaft beim Erstellen eines Indexes
Sie haben auch die Möglichkeit, die Sortierung für einen Index explizit festzulegen, während Sie ihn erstellen. Beispiel:Hinzufügen von „index“ zur Namenseigenschaft der Testsammlung mit Gebietsschema „en“ und Stärke 2:
>db.test.createIndex( { name: 1}, { collation: { locale: 'en', strength: 2 } })
-
So führen Sie Abfragen mithilfe von Sortierung durch
Die Collation-Eigenschaft muss zum Zeitpunkt der Abfrage angegeben werden, um den mit Collation erstellten Index zu verwenden:
db.test.find({name:'blah'})
So fragen Sie Indizes ohne Berücksichtigung der Groß-/Kleinschreibung mit Collation in MongoDBClick To Tweet ab
-
Sortierung in Ihrer Abfrage angeben
Diese Abfrage verwendet den oben angegebenen Index nicht, da keine Sortierung angegeben wurde. Um die Sortierung zu nutzen, müssen wir sie explizit in der Abfrage angeben:
db.test.find({name:'blah'}).collation({ locale: 'en', strength: 2 })
Auch wenn Ihre Sammlung eine Standardsortierung hat, müssen Sie die Sortierung dennoch in Ihrer Abfrage angeben. Andernfalls verwendet MongoDB den spezifischen Index nicht:
-
Sortierung beim Upgrade von einer älteren MongoDB-Version (3.2.x)
Wenn Sie ein Upgrade von einer älteren Version von MongoDB (z. B. 3.2.x) durchführen, unterstützen die vorhandenen Indexe keine Sortierung. Um Collation zum Laufen zu bringen, müssen Sie zunächst sicherstellen, dass alle neuen Funktionen von 3.4.x aktiviert sind:
db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
Aktualisieren Sie die #MongoDB-Version, um mithilfe von CollationClick To Tweet Indizes ohne Berücksichtigung der Groß-/Kleinschreibung zu erstellenWeitere Informationen zu den Inkompatibilitäten finden Sie in den MongoDB 3.x-Versionshinweisen. Bitte beachten Sie, dass es nach Ausführung dieser Schritte schwieriger ist, wieder auf 3.2 herunterzustufen. Als Nächstes prüfen wir die Version Ihres Index.
Sobald Sie auf 3.4-Kompatibilität aktualisiert haben, können Sie neue Indizes erstellen, indem Sie die zuvor beschriebenen Schritte befolgen. Wenn Sie einen großen Index erstellen, verwenden Sie bitte den Rolling-Index-Build-Job von ScaleGrid, um Ihre Indizes hinzuzufügen: