collation() (照合順序の設定)
最終更新:2026-10-09
collation() (照合順序の設定)
collation() はクエリの文字列比較規則を設定します: `db.users.find({ name: 'alice' }).collation({ locale: 'zh', strength: 2 })`。大文字小文字の扱い、アクセント処理、言語順序を制御します。典型的な用途は大文字小文字を区別しない検索とロケール対応の並べ替えです。インデックスも同じ照合順序で作成しないと使えないことに注意してください。
| カテゴリ | カーソル |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.find(<filter>).collation(<collation>)
⚙️ パラメータ
| 照合順序 | locale は必須、strength は任意です(例: {locale: 'en', strength: 2})。 |
|---|
戻り値:照合順序を適用したカーソル(チェーン可能)。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// collation: alice の大文字小文字を区別しない検索
const user = db.users.find({ name: 'alice' })
.collation({ locale: 'en', strength: 2 })
.toArray()
user
出力:
[ { _id: ObjectId('64c8a1b20000000000000001'), name: 'Alice', age: 21 } ]
📌 注意事項
- strength 2 は大文字小文字を無視する。strength 1 は基本文字のみを考慮
- インデックスを使うには、同じ照合順序で作成する必要がある
- ロケールが違えば並び順も違う。クエリとインデックスを揃える
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Qcollation で大文字小文字を区別しないクエリはどう実現しますか?
A{locale: 'en', strength: 2} を渡すと、大文字小文字だけが違う文字列が等しく比較されます。
Qcollation はインデックス使用に影響しますか?
Aはい。クエリの照合順序がインデックスの作成時照合順序と一致しないと、インデックスはクエリに使えません。
Qcollation のロケールはどう選びますか?
Aビジネスの言語に合わせます。例: 中国語なら 'zh'、英語なら 'en'。不明な場合は ICU ロケール一覧を参照してください。