私はmongo 3.4サーバーを持っており、大文字と小文字を区別しないクエリを実行する必要があります。 適切なインデックスを作成しました。mongoコンソールで大文字と小文字を区別しないクエリを作成できます。 Morphiaは照合を無視します
db.users.find( {"name": "alex" }, { "name" : 1 }).collation({ locale: 'en', strength: 2 })
は名前アレックス、アレックス、ALEXとして持つすべてのユーザーを返すなど
私はmorphia 1.3.1を使用して、私のJavaプログラムから同じことを行う必要があります。
Collation col = Collation.builder().locale("en").collationStrength(CollationStrength.SECONDARY).build();
FindOptions fo = new FindOptions().collation(col);
q.disableValidation().asList(fo);
プログラムは、指定されたパラメータの名前を持つユーザーのみを再試行します。 名前をAlexとして設定した場合、名前がalex、ALEXなどのユーザーを取得できません 照合を機能させるためにmorphiaと何か関係があったのでしょうか?
ありがとうございますが、このソリューションの問題はインデックスを使用できないことと、私のコレクションには100万人を超えるユーザーがいることです。 mongo 3.4と照合の使い方では、正規表現でこれまでにできることはできますが、インデックスも持っています。 –
遅く応答して申し訳ありません。必要なフィールドにテキストインデックスを追加することはできませんか? –
テキストインデックスには他の制限がありますが、テキストインデックスにはより遅い –