MongoDBバージョン3.4より前 インデックスを作成できませんでした 大文字と小文字を区別しない 。
バージョン3.4では、 collation
があります ユーザーが言語固有のルールを指定できるオプション 文字列比較の場合 、大文字と小文字の規則やアクセント記号など。
照合オプションの構文は次のとおりです。
collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}
ここでロケール フィールドは必須です;他のすべてのフィールドはオプションです 。
大文字と小文字を区別しないインデックスを作成するには、必須フィールド localeを使用する必要があります および強度 文字列比較レベルのフィールド。 強さコード> 価値の怒りを許容する1-5 。照合についてもっと読む
強度属性は、テキストを照合または照合するときにアクセントまたは大文字小文字を考慮するかどうかを決定します
例:
強度=1の場合 次に、 role =Role=rôle
強度=2の場合 次に役割=役割<ロール
強度=3の場合 次に役割<役割<ロール
比較レベルのドキュメント
したがって、 strongth =2
を使用する必要があります インデックスを作成します。のように:
db.collectionName.createIndex(
{ name: 1, formula: 1, type: 1 },
{
name: "fertilizer_idx",
collation: {locale: "en", strength: 2},
unique: true
}
)
N.B : collation
テキストではオプションを使用できません インデックス。