$strcasecmp (大文字小文字を無視した比較)
最終更新:2026-10-09
$strcasecmp (大文字小文字を無視した比較)
$strcasecmp は 2 つの文字列を大文字小文字を無視して比較し、-1・0・1 を返します。ソートやグループ化、条件分岐に便利です。文字列のみを受け付け、他の型はエラーになります。比較は自然言語の照合順序ではなくコードポイント順で行われ、中国語は Unicode コードポイント順になり、ピンイン順や辞書順とは異なる場合があります。いずれかの引数が null なら結果は null です。
| カテゴリ | 文字列 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $strcasecmp: [ <string-expression1>, <string-expression2> ] }
⚙️ パラメータ
| 文字列1 | 必須。最初の文字列式。 |
|---|---|
| 文字列2 | 必須。2番目の文字列式。 |
戻り値:比較結果: -1、0、または 1。いずれかの引数が null の場合は null。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $strcasecmp: alice と大文字小文字を無視して比較
db.users.aggregate([
{ $project: { cmp: { $strcasecmp: [ '$name', 'alice' ] } } }
])
出力:
{ "_id": 1, "cmp": 0 }
{ "_id": 2, "cmp": 1 }
📌 注意事項
- 大文字小文字を無視: 'ALICE' と 'alice' は 0
- 文字列以外の入力はエラー — 先に $toString で変換する
- 符号がソートの向きと一致するため、ソート補助として使える
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q0 は何を意味しますか?
A大文字小文字を無視して 2 つの文字列が等しいことを意味します。
Q中国語でも動作しますか?
Aはい。ただしコードポイント順の比較であり、ピンイン順や辞書順ではありません。
Q$cmp との違いは?
A$cmp はバイナリ順で大文字小文字を区別して比較します。$strcasecmp は大文字小文字を無視します。