MongoDBで正規表現をエスケープして検索する方法
MongoDBで正規表現による検索を行うには、find()メソッドと /パターン/i の形式を組み合わせます。末尾に付ける i フラグにより、大文字と小文字を区別せずにマッチングできるのがポイントです。ここでは、実際にコレクションを作成し、正規表現検索の動作を順番に確認していきましょう。
サンプルコレクションの作成
まず、insertOne()メソッドを使ってドキュメントをいくつか挿入し、コレクションを作成します。
> db.demo696.insertOne({Message:"/Good/"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6d664551299a9f98c9391")
}
> db.demo696.insertOne({Message:"(good)"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6d67a551299a9f98c9392")
}
> db.demo696.insertOne({Message:"/Bye/"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6d68b551299a9f98c9393")
}
> db.demo696.insertOne({Message:"(GOOD)"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6d693551299a9f98c9394")
}このように、「Good」「good」「GOOD」など、大文字・小文字が異なるバリエーションや記号を含んだデータを用意しました。
登録したドキュメントの確認
find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.demo696.find();
実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5ea6d664551299a9f98c9391"), "Message" : "/Good/" }
{ "_id" : ObjectId("5ea6d67a551299a9f98c9392"), "Message" : "(good)" }
{ "_id" : ObjectId("5ea6d68b551299a9f98c9393"), "Message" : "/Bye/" }
{ "_id" : ObjectId("5ea6d693551299a9f98c9394"), "Message" : "(GOOD)" }正規表現を使った部分一致検索
それでは、正規表現を使って「good」という文字列を含むドキュメントを検索してみましょう。次のようにクエリを記述します。
> db.demo696.find({Message:/good/i});実行結果は以下の通りです。
{ "_id" : ObjectId("5ea6d664551299a9f98c9391"), "Message" : "/Good/" }
{ "_id" : ObjectId("5ea6d67a551299a9f98c9392"), "Message" : "(good)" }
{ "_id" : ObjectId("5ea6d693551299a9f98c9394"), "Message" : "(GOOD)" }結果のポイント
ご覧の通り、「/Good/」「(good)」「(GOOD)」という3件のドキュメントがマッチしました。「good」を含まない「/Bye/」だけが除外されています。i フラグのおかげで、大文字・小文字の違いを意識せずに柔軟なパターン検索が可能になっています。フィールド値の中に特殊文字(スラッシュや括弧など)が含まれていても、正規表現は値全体に対して部分一致で評価されるため、問題なくヒットする点も覚えておくと便利です。
-
MongoDBの_idフィールドを非表示にする方法
MongoDBの_idフィールドを非表示にする方法MongoDBでは、find()メソッドでドキュメントを検索すると、デフォルトで_idフィールド(ObjectId)が必ず結果に含まれます。しかし、射影(プロジェクション)という仕組みを使えば、この_idフィールドを非表示にし、必要なフィールドだけを取得することが可能です。本記事では、具体的な手順をサンプルコード付きで解説します。1. コレクションとドキュメントの作成まず、サンプル用のコレクションを作成し、ドキュメントを挿入します。> db.demo575.insertOne({id:101, Information:{Name:&quo
-
MongoDBで複数ドキュメントを一括挿入する方法(insertManyの使い方)
MongoDBで大量のデータを一度に登録したい場合は、insertMany()メソッドを使用します。insertMany()を使うことで、1回のコマンド実行でコレクションに複数のドキュメントをまとめて挿入できます。サンプルコレクションの作成まずは、複数のドキュメントを含むコレクションを作成してみましょう。以下の例では、「demo729」というコレクションに、銀行名・カード種別・顧客情報を含む3件のドキュメントを挿入しています。> db.demo729.insertMany( [ ... { BankName:"HDFC Bank",