正規表現は、単一の文字列を使用して、特定の構文規則に一致する一連の文字列を記述および照合します。
多くのプログラミング言語は、正規表現を使用した文字列操作をサポートしています。
MongoDB は、$regex 演算子を使用して、文字列に一致する正規表現を設定します。
MongoDB は正規表現言語として PCRE (Perl 互換正規表現) を使用します。
全文検索とは異なり、正規表現を使用する場合は設定を行う必要はありません。
記事のコンテンツとタグが含まれる次の posts コレクションのドキュメント構造を検討してください。
{
"post_text": "enjoy the mongodb articles on tutorialspoint",
"tags": [
"mongodb",
"tutorialspoint"
]
}正規表現の使用
次のコマンドは、正規表現を使用して、w3cschool.cc 文字列を含む記事を検索します。上記のクエリは次のように記述することもできます:
>db.posts.find({post_text:{$regex:"w3cschool.cc"}})大文字と小文字を区別しない正規表現検索で大文字と小文字を区別する必要がある場合は、$options を $i に設定できます。
次のコマンドは、大文字と小文字を区別しない文字列 w3cschool.cc を検索します:
>db.posts.find({post_text:/w3cschool.cc/})文字列 w3cschool.cc を含むすべてのデータはコレクションに返され、大文字と小文字は区別されません:
>db.posts.find({post_text:{$regex:"w3cschool.cc",$options:"$i"}})配列要素は正規表現を使用します 配列フィールドで正規表現を使用してコンテンツを検索することもできます。 これは、チュートリアル (tutorial、tutorial、tutorialpoint、またはtutorialphp) で始まるタグ データを検索する必要がある場合に、タグの実装で非常に役立ちます。 次のコードを使用できます:
{
"_id" : ObjectId("53493d37d852429c10000004"),
"post_text" : "hey! this is my post on W3Cschool.cc",
"tags" : [ "tutorialspoint" ]
}正規表現クエリを最適化する- ドキュメント内のフィールドにインデックスが付けられている場合、インデックスを使用してすべてのデータを検索する方が、正規表現の一致よりも高速になります。
- ^tut
の場合、クエリ ステートメントは tut で始まる文字列を検索します。
正規表現で変数を使用します。結合された文字列を変換するには必ず eval を使用してください。文字列を直接連結して式に渡すことはできません。それ以外の場合、エラー メッセージは報告されませんが、結果は空になります。例は次のとおりです:
>db.posts.find({tags:{$regex:"tutorial"}})以下は、title キーワードを含み、大文字と小文字が区別されないファジー クエリです:
var name=eval("/" + 变量值key +"/i");












![PHP 実践開発入門: PHP クイック作成 [中小企業フォーラム]](https://img.php.cn/upload/course/000/000/035/5d27fb58823dc974.jpg)









