MongoDBでフィールド値に含まれる「@email」のような文字列を検索する方法
MongoDBのfind()メソッドを使えば、正規表現(Regex)を活用して、フィールド値の中から特定の文字列を柔軟に検索できます。本記事では、「@email」という文字列を含むドキュメントを検索する方法を、実際のコード例とともに解説します。
1. 検索用コレクションの作成
まずは、メールアドレスを格納したドキュメントを持つコレクションを作成しましょう。
> db.demo727.insertOne({UserId:"John@email.com"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5eab375f43417811278f5898")
}
> db.demo727.insertOne({UserId:"John@yahoo.com"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5eab376043417811278f5899")
}
> db.demo727.insertOne({UserId:"Chris@EMAIL.com"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5eab376143417811278f589a")
}この例では、3つのドキュメントを挿入しています。「John@email.com」「John@yahoo.com」「Chris@EMAIL.com」の3種類で、大文字・小文字が混在している点に注目してください。
2. コレクション内の全ドキュメントを表示
find()メソッドを引数なしで実行すると、コレクション内のすべてのドキュメントを取得できます。
> db.demo727.find();
実行結果は以下のとおりです。
{ "_id" : ObjectId("5eab375f43417811278f5898"), "UserId" : "John@email.com" }
{ "_id" : ObjectId("5eab376043417811278f5899"), "UserId" : "John@yahoo.com" }
{ "_id" : ObjectId("5eab376143417811278f589a"), "UserId" : "Chris@EMAIL.com" }3. 「@email」を含む文字列を検索するクエリ
「@email」という文字列を含むドキュメントを検索するには、値に正規表現パターン/@email/iを指定します。末尾のiフラグを付けることで、大文字・小文字を区別しない検索が可能になります。
> db.demo727.find({"UserId":/@email/i});実行結果:
{ "_id" : ObjectId("5eab375f43417811278f5898"), "UserId" : "John@email.com" }
{ "_id" : ObjectId("5eab376143417811278f589a"), "UserId" : "Chris@EMAIL.com" }ポイント解説
- 正規表現による部分一致検索:MongoDBでは、クエリ条件に正規表現を直接指定することで、部分一致検索が簡単に行えます。
- 「i」フラグの効果:このフラグにより、小文字の「@email」だけでなく、大文字を含む「@EMAIL」もマッチ対象になります。上記の結果でも「Chris@EMAIL.com」が正しくヒットしていることが確認できます。
- $regex演算子との併用:より明示的に書きたい場合は、
{ "UserId": { $regex: "@email", $options: "i" } }のように$regex演算子を使うこともできます。
このように、正規表現を活用すれば、完全一致ではなく「特定の文字列を含む」柔軟な条件でのドキュメント検索が実現できます。メールアドレスやURLなど、部分的なパターンでデータを絞り込みたい場合に非常に便利です。
-
MongoDBでフィールドの戻り値を制限するクエリの書き方($slice演算子の使い方)
MongoDBでフィールドの戻り値を制限するクエリの書き方MongoDBで配列フィールドの要素数を制限して取得したい場合は、$slice演算子を使用します。この演算子を活用することで、クエリ結果として返す配列の要素数を柔軟にコントロールできます。ここでは、具体的な手順をサンプルコードとともに解説します。1. コレクションとドキュメントの作成まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成します。> db.demo594.insertOne(... {... &n
-
MongoDBで特定の文字列を使ってフィールドのすべての値を一括更新する方法
MongoDBでフィールドのすべての値を一括更新する方法MongoDBのコレクション内に存在するすべてのドキュメントの特定フィールドを、同じ文字列でまとめて更新したい場合があります。そのようなときは、update()メソッドにオプション「multi: true」を指定します。この記事では、実際のコマンド例をもとに、手順をわかりやすく解説します。1. サンプルコレクションの作成まずはinsertOne()メソッドを使って、テスト用コレクション「demo720」に複数のドキュメントを挿入します。> db.demo720.insertOne({SubjectName:MySQL}); {