MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBの正規表現で特定のレコードに一致させる方法

MongoDBの正規表現で特定のレコードに一致させる方法

MongoDBでは、find()メソッドに正規表現を組み合わせることで、特定のパターンに一致するドキュメントを柔軟に検索できます。本記事では、サンプルコレクションを作成し、正規表現を使って目的のレコードを取得するまでの具体的な手順を解説します。

コレクションの作成とドキュメントの挿入

まず、insertOne()メソッドを使用して、コレクション「workingOfRegularExpressionDemo」にドキュメントを挿入します。

> db.workingOfRegularExpressionDemo.insertOne({ "StudentDetails": { "StudentName": "John" }, "StudentAge": 21 });
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cf227acb64a577be5a2bc07")
}
> db.workingOfRegularExpressionDemo.insertOne({ "StudentDetails": { "StudentName": "JOHN" }, "StudentAge": 19 });
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cf227b8b64a577be5a2bc08")
}
> db.workingOfRegularExpressionDemo.insertOne({ "StudentDetails": { "StudentName": "Carol" }, "StudentAge": 20 });
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cf227c2b64a577be5a2bc09")
}

すべてのドキュメントを確認する

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。

> db.workingOfRegularExpressionDemo.find();

実行結果は次のとおりです。

{ "_id" : ObjectId("5cf227acb64a577be5a2bc07"), "StudentDetails" : { "StudentName" : "John" }, "StudentAge" : 21 }
{ "_id" : ObjectId("5cf227b8b64a577be5a2bc08"), "StudentDetails" : { "StudentName" : "JOHN" }, "StudentAge" : 19 }
{ "_id" : ObjectId("5cf227c2b64a577be5a2bc09"), "StudentDetails" : { "StudentName" : "Carol" }, "StudentAge" : 20 }

正規表現で特定のレコードを取得する

ここからが本題です。StudentNameが「JOHN」であるドキュメントを取得するには、次のように正規表現をクエリに指定します。

> db.workingOfRegularExpressionDemo.find({ 'StudentDetails.StudentName': /JOHN/ });

実行すると、条件に一致したドキュメントのみが返されます。

{ "_id" : ObjectId("5cf227b8b64a577be5a2bc08"), "StudentDetails" : { "StudentName" : "JOHN" }, "StudentAge" : 19 }

ポイント:正規表現は大文字・小文字を区別する

MongoDBの正規表現は、デフォルトで大文字・小文字を区別します。そのため、/JOHN/というパターンは「John」や「john」には一致せず、「JOHN」のみにヒットします。大文字・小文字を区別せずに検索したい場合は、iオプションを付けて/john/iのように指定することで、より柔軟な検索が可能になります。

  1. Pythonの正規表現入門:re.match()とre.search()の違いをわかりやすく解説

    Pythonで正規表現を扱う際によく使われるのが、標準ライブラリ re モジュールに含まれる re.match() と re.search() の2つのメソッドです。どちらも文字列からパターンを探す機能を持ちますが、動作には重要な違いがあります。 re.match():文字列の先頭だけをチェックする re.match() は、文字列の先頭でパターンがマッチした場合にのみ結果を返します。先頭以外の場所でパターンが見つかっても、マッチとはみなされません。 例として、文字列「TP Tutorials Point TP」に対してパターン「TP」で match() を呼び出すと、文字列が「TP」で始まっ

  2. Pythonの正規表現で括弧(カッコ)をマッチさせて削除する方法

    Pythonの正規表現を使えば、文字列に含まれる括弧「(」と「)」を簡単に検索・抽出・削除できます。この記事では、標準ライブラリのreモジュールを使って、文字列から括弧をマッチさせる方法と、括弧をすべて取り除く方法を、具体的なコード例と実行結果とともにわかりやすく解説します。括弧を正規表現でマッチさせる基本正規表現において、括弧 ( ) はグループ化を意味する特殊文字として扱われるため、そのまま書いてもリテラルとしてはマッチしません。括弧そのものを検索したい場合は、バックスラッシュ \ でエスケープし、\( \) のように記述する必要があります。以下のコードは、文字列 s の中から空の括弧「(