$regexFindAll (すべての正規表現マッチ)

最終更新:2026-10-09

$regexFindAll (すべての正規表現マッチ)

$regexFindAll は正規表現で文字列を検索し、すべてのマッチを配列で返します。各要素は match・idx・captures フィールドを持ち、マッチがなければ空配列になります。メールアドレスやリンク、数字などの繰り返しパターンの抽出に最適です。$regexFind と違い null を返すことはなく、常に配列を返すため、$size でマッチ数を直接数えられます。

カテゴリ文字列
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $regexFindAll: { input: <string-expression>, regex: <pattern>, options: <options> } }

⚙️ パラメータ

input必須。検索対象の文字列。
regex必須。Perl 互換の正規表現パターン文字列。
options任意のフラグ(i、m など)。

戻り値:マッチドキュメントの配列。何もマッチしない場合は空、入力が null の場合は null。

▶ 例

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

// $regexFindAll: 投稿からすべてのリンクを抽出
 db.posts.aggregate([
  { $project: { links: { $regexFindAll: { input: '$body', regex: 'https?://[a-z0-9.]+' } } } }
])

出力:

{ "_id": 1, "links": [ { "match": "https://a.com", "idx": 10, "captures": [] }, { "match": "https://b.org", "idx": 32, "captures": [] } ] }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Qマッチしない場合は何が返りますか?
Anull ではなく空配列です。
Qマッチ数を数えるには?
A結果を $size で包みます。
Q$regexFind との違いは?
A$regexFind は最初のマッチ(なければ null)、$regexFindAll はすべてのマッチを返します。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%