MongoDB でフィールドに文字列が含まれていることを確認する
-
MongoDB で
regex
を使用する - MongoDB でフィールドに文字列が含まれているかどうかを確認する
- フィールドに文字列が含まれているかどうかを確認する (大文字と小文字を区別しない)
- フィールドに文字列が含まれているかどうかを確認する (結果なし)
- フィールドに特定の開始文字列が含まれているかどうかを確認する
- フィールドに特定の終了文字列が含まれているかどうかを確認する
この投稿では、MongoDB で正規表現を使用して、フィールドに文字列が含まれているかどうかを判断する方法に取り組みます。
MongoDB で regex
を使用する
正規表現 (regex
) は、検索パターンを定義するテキスト文字列です。 いくつかの regex
エンジンは若干異なる構文で書かれていますが、基本は同じです。
regex
式は、次の例のように両側に 1つのスラッシュ (/
) で囲まれた文字列 (一連の文字) です。
db.collection.find({
"k": /pattern/
})
しかし現在、シェルの正規表現は mongoplayground.net,
のクエリでは機能しないため、代わりに以下の式を使用できます。
db.collection.find({
"k": {
"$regex": "pattern"
}
})
MongoDB の $regex
演算子は、文字列を含むクエリを見つけるために使用されます。 MongoDB では、regular expression
を使用して、クエリを介して文字列内のパターンを検索できます。
$regex
演算子は、正規表現機能を使用して、クエリ内の一致テキストをパターン化するために使用されます。
構文:
db.collection.find({"k":{$regex:"pattern"}});
$regex
正規表現演算子で渡すことができる値文字列を含むフィールドのドキュメントを表示できます。 上記の構文を理解するには、次のドキュメントを使用して teams
のコレクションを作成できます。
db={
"teams": [
{
team: "Manchester City ",
position: "1st",
points: 70
},
{
team: "Liverpool",
position: "2nd",
points: 69
},
{
team: "Chelsea",
position: "3rd",
points: 59
},
{
team: "Arsenal",
position: "4th",
points: 54
},
{
team: "Tottenham",
position: "5th",
points: 51
},
{
team: "Manchester United",
position: "6th",
points: 50
},
]
}
MongoDB でフィールドに文字列が含まれているかどうかを確認する
次のコードを使用して、チーム フィールドに文字列 Man
が含まれているドキュメントがあるかどうかを確認できます。
クエリ:
db.teams.find({
team: {
"$regex": "Man"
}
})
出力:
[
{
"_id": ObjectId("5a934e000102030405000000"),
"points": 70,
"position": "1st",
"team": "Manchester City "
},
{
"_id": ObjectId("5a934e000102030405000005"),
"points": 50,
"position": "6th",
"team": "Manchester United"
}
]
フィールドに文字列が含まれているかどうかを確認する (大文字と小文字を区別しない)
MongoDB で regex
を使用して、フィールドに大文字と小文字を区別しない特定の文字列値が含まれているかどうかを確認できます。 MongoDB の正規表現で $i
オプションを使用します。
$i
オプションは、指定された小文字と大文字の文字列値を持つフィールドを見つけるのに役立ちます。
クエリ:
db.teams.find({
team: {
"$regex": "MAN",
"options": "$i"
}
})
出力:
[
{
"_id": ObjectId("5a934e000102030405000000"),
"points": 70,
"position": "1st",
"team": "Manchester City "
},
{
"_id": ObjectId("5a934e000102030405000005"),
"points": 50,
"position": "6th",
"team": "Manchester United"
}
]
フィールドに文字列が含まれているかどうかを確認する (結果なし)
検索した特定の文字列がフィールドに含まれていない場合は、ドキュメントが見つかりません
というメッセージが表示されます。 たとえば、次のクエリを使用しているとします。
クエリ:
db.teams.find({
team: {
"$regex": "Wolves"
}
})
出力:
no document found
チーム名に Wolves
という文字列を含むドキュメントがないため、ドキュメントが見つかりません.
という出力が得られます。
フィールドに特定の開始文字列が含まれているかどうかを確認する
MongoDB で正規表現を使用して、フィールドが特定の文字列値で始まるかどうかを調べます。
クエリ:
db.teams.find({
team: {
"$regex": "^C"
}
})
出力:
[
{
"_id": ObjectId("5a934e000102030405000002"),
"points": 59,
"position": "3rd",
"team": "Chelsea"
}
]
MongoDB の regex
の助けを借りて、文字 "C"
で始まるドキュメントを 1つ見つけることに成功しました。
フィールドに特定の終了文字列が含まれているかどうかを確認する
この例で、フィールドが指定された文字列値で終わるかどうかを確認してみましょう。
クエリ:
db.teams.find({
team: {
"$regex": "l$"
}
})
出力:
[
{
"_id": ObjectId("5a934e000102030405000001"),
"points": 69,
"position": "2nd",
"team": "Liverpool"
},
{
"_id": ObjectId("5a934e000102030405000003"),
"points": 54,
"position": "4th",
"team": "Arsenal"
}
]
MongoDB の regex
の助けを借りて、文字 "l"
で終わる 2つのドキュメントを見つけました。
この記事を通じて、MongoDB で $regex
を使用してフィールドに文字列が含まれているかどうかを確認するさまざまな方法の例を学びました。