cursor.collation()
定義
cursor.collation(<collation document>)
重要
mongosh メソッド
このページでは、
mongosh
メソッドが文書化されます。これは Node.js などの言語固有のドライバーのドキュメントではありません。MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。
db.collection.find()
によって返されるカーソルの 照合 を指定します。使用するには、db.collection.find()
を追加します。cursor.collation()
は次の照合ドキュメントを受け入れます。{ locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } 照合を指定する場合、
locale
フィールドは必須ですが、その他の照合フィールドはすべて任意です。フィールドの説明については、照合ドキュメントを参照してください。フィールドタイプ説明locale
stringICU のロケールです。サポート対象のロケールのリストについては、「サポートされている言語とロケール」を参照してください。
単純なバイナリ比較を指定するには、
"simple"
のlocale
値を指定します。strength
integer任意。実行する比較のレベルです。ICU 比較レベルに対応しています。可能な値は次のとおりです。
値説明1プライマリ レベルの比較。照合では、基本文字のみの比較を実行し、発音区別記号や大文字と小文字の違いなどの他の相違は無視されます。2セカンダリ レベルの比較。照合で、発音区別記号などの二次的な相違まで比較を実行します。つまり、照合では基本文字(プライマリの相違)と発音区別記号(セカンダリの相違)の比較が実行されます。基本文字同士の違いは、二次的な違いよりも優先されます。3三次レベルの比較。照合では、大文字と小文字の相違や文字の相違など、三次的な相違まで比較を実行します。つまり、照合では、基本文字(プライマリの相違)、発音区別符号(セカンダリの相違)、大文字と小文字と異表記(三次の相違)を比較します。基本文字間の相違はセカンダリの相違よりも優先され、セカンダリの相違は三次レベルの相違よりも優先されます。
これがデフォルトのレベルです。
4四次レベル。プライマリから三次までのレベルで句読点を無視する場合や、日本語のテキストを処理する場合に、句読点を考慮する特定のユースケースに限定されます。5同一レベル。タイブレークの場合の特定のユースケースに限定されます。詳細については、「ICU照合:比較レベル」を参照してください。
caseLevel
ブール値任意。
strength
レベル1
または2
で、大文字と小文字の比較を含めるかどうかを決定するフラグです。true
の場合、大文字と小文字の比較が含まれます。すなわちstrength:1
と共に使用すると、照合では基本文字と大文字と小文字が比較されます。strength:2
と共にに使用すると、照合では、基本文字、発音区別符号(および他のセカンダリ レベルの相違がある場合があります)、大文字と小文字が比較されます。
false
の場合、レベル1
またはレベル2
での大文字と小文字の比較が含まれません。デフォルトはfalse
に設定されています。詳細については、「ICU 照合: ケース レベル」を参照してください。
caseFirst
string任意。三次レベルの比較中に、大文字と小文字の相違のソート順序を決定するフィールドです。
可能な値は次のとおりです。
値説明"upper"大文字が小文字の前にソートされます。"Lower"小文字が大文字の前にソートされます。"OFF"デフォルト値。"lower"
と似ていますが、若干の違いがあります。相違の詳細については、https://unicode-org.github.io/icu/userguide/strings/properties.html#customization を参照してください。numericOrdering
ブール値任意。数字の文字列を数値として比較するか、文字列として比較するかを決定するフラグです。
true
の場合は、数値として比較します。つまり、"10"
は"2"
より大きいです。false
の場合は、string として比較します。つまり、"10"
は"2"
より小さいです。デフォルトは、
false
に設定されています。alternate
string任意。照合で、空白と句読点を比較目的の基本文字として考慮するかどうかを決定するフィールドです。
可能な値は次のとおりです。
値説明"non-ignorable"
空白と句読点は基本文字と見なされます。"shifted"
空白文字と句読点は基本文字とは見なされず、強度のレベルが 3 より高い場合にのみ区別されます。「 ICU照合:比較レベル 」を参照してください。 詳しくは、 を参照してください。
デフォルトは、
"non-ignorable"
に設定されています。maxVariable
string任意。
alternate: "shifted"
の場合に無視可能と見なされる文字数を決定するフィールドです。alternate: "non-ignorable"
の場合は効果がありません。可能な値は次のとおりです。
値説明"punct"
空白も句読点も「無視可能」、つまり基本文字とはみなされません。"space"
空白は「無視可能」です。つまり、基本文字とはみなされません。backwards
ブール値任意。発音区別符号付きの文字列を、文字列の後ろからソートするかどうかを決定するフラグです(フランス語の辞書の順序など)。
true
の場合は、後ろから前に比較します。false
の場合は、前から後ろに比較します。デフォルト値は
false
です。normalization
ブール値任意。テキストに正規化が必要かどうかを確認し、正規化を実行するかどうかを決定するフラグです。一般的に、テキストの大部分はこの正規化プロセシングを必要としません。
true
の場合は、完全に正規化されているかどうかを確認し、正規化を実行してテキストを比較します。false
の場合はチェックしません。デフォルト値は
false
です。https://unicode-org.github.io/icu/userguide/collation/concesss.html# Normalization を参照してください 詳細については、「 」を参照してください。
例
以下のドキュメントを持つ foo
コレクションを考えてみましょう。
{ "_id" : 1, "x" : "a" } { "_id" : 2, "x" : "A" } { "_id" : 3, "x" : "á" }
次の操作では、 x: "a"
のクエリフィルターを指定します。 この操作には、 locale: "en_US"
(米国英語のロケール)およびstrength: 1
(基本文字のみを比較します。つまり、大文字と小文字と発音区別符号を無視する)による照合オプションも含まれています。
db.foo.find( { x: "a" } ).collation( { locale: "en_US", strength: 1 } )
この操作により、次のドキュメントが返されます。
{ "_id" : 1, "x" : "a" } { "_id" : 2, "x" : "A" } { "_id" : 3, "x" : "á" }
照合を指定しない場合、つまりdb.collection.find( { x:
"a" } )
はクエリが一致するのは次のドキュメントのみです。
db.foo.find( { x: "a" } )
cursor.sort()
やcursor.count()
などの他のカーソル メソッドをcursor.collation()
に連鎖させることができます。
db.collection.find({...}).collation({...}).sort({...}); db.collection.find({...}).collation({...}).count();
注意
1 つの操作に複数の照合は指定できません。たとえば、フィールドごとに異なる照合を指定できません。また、ソートと検索を一度に実行する場合、検索とソートで別の照合を使用できません。