MongoDBで大文字と小文字を区別しない検索(クエリ)を行う方法
MongoDBで大文字と小文字を区別せずに検索したい場合は、正規表現を使用します。本記事では、実際にドキュメントを含むコレクションを作成しながら、ケースインセンシティブ(大文字小文字を無視した)クエリの書き方を具体例とともに解説します。
サンプルコレクションの作成
まずは動作確認のため、コレクション「caseInsensitiveDemo」に複数のドキュメントを挿入します。「David」「DAVID」「david」「daVID」など、同じ名前でも大文字・小文字の組み合わせが異なるデータを用意するのがポイントです。挿入に使うクエリは以下の通りです。
> db.caseInsensitiveDemo.insertOne({"UserName":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7f6fec8d10a061296a3c45")
}
> db.caseInsensitiveDemo.insertOne({"UserName":"DAVID"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7f6ff28d10a061296a3c46")
}
> db.caseInsensitiveDemo.insertOne({"UserName":"david"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7f6ffa8d10a061296a3c47")
}
> db.caseInsensitiveDemo.insertOne({"UserName":"Carol"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7f70008d10a061296a3c48")
}
> db.caseInsensitiveDemo.insertOne({"UserName":"Mike"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7f70058d10a061296a3c49")
}
> db.caseInsensitiveDemo.insertOne({"UserName":"Sam"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7f70098d10a061296a3c4a")
}
> db.caseInsensitiveDemo.insertOne({"UserName":"daVID"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7f70138d10a061296a3c4b")
}登録済みドキュメントの確認
find()メソッドを使えば、コレクション内のすべてのドキュメントを一覧表示できます。
> db.caseInsensitiveDemo.find().pretty();
上記クエリの実行結果は次のようになります。
{ "_id" : ObjectId("5c7f6fec8d10a061296a3c45"), "UserName" : "David" }
{ "_id" : ObjectId("5c7f6ff28d10a061296a3c46"), "UserName" : "DAVID" }
{ "_id" : ObjectId("5c7f6ffa8d10a061296a3c47"), "UserName" : "david" }
{ "_id" : ObjectId("5c7f70008d10a061296a3c48"), "UserName" : "Carol" }
{ "_id" : ObjectId("5c7f70058d10a061296a3c49"), "UserName" : "Mike" }
{ "_id" : ObjectId("5c7f70098d10a061296a3c4a"), "UserName" : "Sam" }
{ "_id" : ObjectId("5c7f70138d10a061296a3c4b"), "UserName" : "daVID" }大文字・小文字を区別しないクエリの書き方
MongoDBで大文字小文字を区別せずに検索するには、正規表現パターンの末尾に「i」オプション(ignore case フラグ)を付けます。これにより、大文字と小文字の違いを無視したマッチングが可能になります。
> db.caseInsensitiveDemo.find({UserName: /^david$/i } ).pretty();実行すると、表記の異なる「David」関連のドキュメントだけが抽出されます。
{ "_id" : ObjectId("5c7f6fec8d10a061296a3c45"), "UserName" : "David" }
{ "_id" : ObjectId("5c7f6ff28d10a061296a3c46"), "UserName" : "DAVID" }
{ "_id" : ObjectId("5c7f6ffa8d10a061296a3c47"), "UserName" : "david" }
{ "_id" : ObjectId("5c7f70138d10a061296a3c4b"), "UserName" : "daVID" }ポイントのまとめ
- 「/^david$/i」のように、パターンの後に「i」を指定すると大文字小文字を区別せず完全一致検索ができます。
- 部分一致で検索したい場合は、「^」(先頭)や「$」(末尾)を外して「/david/i」と指定します。
- ユーザー名やメールアドレスなど、表記ゆれが発生しやすいフィールドの検索に特に有効です。
このように正規表現の「i」フラグを活用すれば、1つのクエリだけで大小さまざまな表記のドキュメントを柔軟に取得できます。
-
QRコードの作り方・読み取り方を徹底解説!初心者向け完全ガイド
街中や商品パッケージ、チラシなどで目にする機会が多いQRコード。四角い形で、角に小さな正方形が配置され、内部には複雑な模様や点々が描かれています。一見すると何の役に立つのか分かりにくいかもしれませんが、実はとても便利なツールなのです。 QRコードとは? QRコードは「Quick Response(クイックレスポンス)」の略称です。スーパーのレジでバーコードを読み取って価格情報を照会するのと同じように、QRコードもスキャンすることで、あの複雑なデザインの中に隠された情報を取り出すことができます。 バーコードとの大きな違いは、誰でもQRコードを作成できるという点です。企業だけでなく、個人
-
MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方
MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、