$regex (正規表現)

最終更新:2026-10-09

$regex (正規表現)

$regex は、文字列フィールドを正規表現でマッチします。`{ name: { $regex: '^A' } }` は A で始まる名前に一致します。オプション: i = 大文字小文字を区別しない、m = 複数行、x = 空白を無視。インデックスがない場合、$regex クエリはコレクション全体をスキャンします。通常のインデックスを使えるのは、大文字小文字を区別する先頭アンカー(^)のパターンだけです。

カテゴリ要素と評価
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ <field>: { $regex: <pattern>, $options: '<options>' } }

⚙️ パラメータ

フィールドマッチ対象のドキュメントフィールド。
正規表現PCRE 形式の正規表現パターン。
オプション任意: i=大文字小文字を区別しない、m=複数行、x=空白を無視、など。

戻り値:一致するドキュメントのカーソル

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $regex: A で始まる名前(大文字小文字を区別)
db.users.find({ name: { $regex: '^A' } })

// 大文字小文字を区別しない: mongodb を含むタイトル
db.articles.find({ title: { $regex: 'mongodb', $options: 'i' } })

出力:

// A で始まる名前と、mongodb をどこかに含むタイトル(大文字小文字を区別しない)を返す

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q$regex を大文字小文字を区別しないようにするには?
A$options: 'i' を追加します。例: { name: { $regex: 'alice', $options: 'i' } }。
Q$regex はインデックスを使えますか?
A先頭アンカーで大文字小文字を区別するパターン(例: ^A)だけが通常のインデックスを使えます。それ以外はコレクションスキャンになります。
Q全文検索には $regex と $text のどちらを使うべきですか?
A大規模なテキストには $text(インデックス使用・ステミング対応)を使います。$regex は小規模データや正確なパターンに適しています。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%