配列コンテンツの照会
このステップでは、MongoDB で配列コンテンツに基づいてドキュメントを照会およびフィルタリングする方法を学びます。前のステップで使用した arraylab
データベースと students
コレクションを引き続き使用します。
まず、MongoDB シェルにいることを確認しましょう。
mongosh
arraylab
データベースに切り替えます。
use arraylab
配列に特定の要素が含まれるドキュメントを検索するには、直接照合を使用します。
db.students.find({ courses: "Data Science" })
出力例:
[
{
_id: ObjectId("..."),
name: 'Alice Johnson',
age: 22,
courses: [ 'Advanced Mathematics', 'Computer Science', 'Data Science' ]
}
]
複数の特定の要素を含む配列を持つドキュメントを照会するには、$all
演算子を使用します。
db.students.find({
courses: { $all: ["Advanced Mathematics", "Computer Science"] }
})
配列要素が条件に一致するドキュメントを検索するには、$elemMatch
演算子を使用します。
db.students.find({
grades: { $elemMatch: { $gt: 100 } }
})
この照会は、少なくとも 1 つの点数が 100 を超えるドキュメントを検索します。
配列内の要素数をカウントするには、$size
演算子を使用します。
db.students.find({
activities: { $size: 2 }
})
この照会は、正確に 2 つの活動を持つドキュメントを検索します。
より複雑な照会を示すために、もう 1 つのドキュメントを追加しましょう。
db.students.insertOne({
name: "Charlie Brown",
courses: ["Art", "Music", "Literature"],
grades: [88, 92, 85],
activities: ["Painting Club"]
})
次に、複数の条件を組み合わせたより複雑な照会を行いましょう。
db.students.find({
$and: [
{ courses: { $in: ["Art", "Music"] } },
{ grades: { $elemMatch: { $gte: 90 } } }
]
})
この照会は、コースに "Art" または "Music" が含まれ、かつ少なくとも 1 つの点数が 90 以上である学生を検索します。