$regexMatch (正規表現テスト)
最終更新:2026-10-09
$regexMatch (正規表現テスト)
$regexMatch は文字列が正規表現にマッチするかを判定し、true か false を返します。もっとも軽量な正規表現演算子で、フィルタやデータ検証に最適です。「マッチするか」だけに答え、マッチした内容は返しません。内容の抽出には $regexFind を使ってください。options には i・m・s・x などのフラグを指定できます。null または欠落した入力は null になります。
| カテゴリ | 文字列 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $regexMatch: { input: <string-expression>, regex: <pattern>, options: <options> } }
⚙️ パラメータ
| input | 必須。テスト対象の文字列。 |
|---|---|
| regex | 必須。Perl 互換の正規表現パターン文字列。 |
| options | 任意のフラグ(i、m、s、x など)。 |
戻り値:マッチする場合は true、それ以外は false。入力が null の場合は null。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $regexMatch: Gmail アドレスかどうか(大文字小文字を無視)
db.users.aggregate([
{ $project: { isGmail: { $regexMatch: { input: '$email', regex: '@gmail\\.com$', options: 'i' } } } }
])
出力:
{ "_id": 1, "isGmail": true }
{ "_id": 2, "isGmail": false }
📌 注意事項
- ブール値を返す — $match の $expr でそのまま使える
- regex はパターン文字列。^ や $ などのアンカーも有効
- 判定のみ。マッチした内容が要るなら $regexFind を使う
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$match の中で使えますか?
Aはい — $expr で包みます。
Qブール値しか返しませんか?
Aはい — マッチ内容なしの true か false だけです。
Q大文字小文字を無視するには?
Aoptions に 'i' を渡します。