複数の条件を適用する
このステップでは、MongoDB コレクションを照会する際に複数の条件を適用する方法を学びます。複数の条件を使うことで、データを効果的にフィルタリングするための、より正確で複雑なクエリを作成できます。
まず、ターミナルを開き、MongoDB シェルを起動します。
mongosh
次に、複数の条件クエリを示すためのサンプルの学生コレクションを作成しましょう。
use school_database
db.students.insertMany([
{ name: "Alice", age: 22, grade: "A", major: "Computer Science" },
{ name: "Bob", age: 20, grade: "B", major: "Mathematics" },
{ name: "Charlie", age: 25, grade: "A", major: "Physics" },
{ name: "David", age: 19, grade: "C", major: "Computer Science" }
])
$and
演算子を使って複数の条件を適用する方法を見てみましょう。これにより、すべてが真でなければならない複数の条件を指定できます。
db.students.find({
$and: [{ age: { $gte: 20 } }, { grade: "A" }]
});
このクエリは、20歳以上で、かつ「A」の成績を持つ学生を返します。条件を分解してみましょう。
$gte
は「以上」を意味します
$and
は両方の条件が満たされなければならないことを保証します
以下のような出力が表示されるはずです。
[
{
_id: ObjectId("..."),
name: 'Alice',
age: 22,
grade: 'A',
major: 'Computer Science'
},
{
_id: ObjectId("..."),
name: 'Charlie',
age: 25,
grade: 'A',
major: 'Physics'
}
]
また、$or
演算子を使って、少なくとも 1 つの条件に一致するドキュメントを見つけることもできます。
db.students.find({
$or: [{ major: "Computer Science" }, { age: { $lt: 21 } }]
});
このクエリは、コンピュータサイエンスの学科に所属している、または 21 歳未満の学生を返します。
結果には、デビッド(21歳未満)や、アリスとデビッド(コンピュータサイエンスの学科に所属)のような学生が含まれます。