配列から要素を削除する
要素を追加できるのと同様に、削除することも必要です。MongoDB はこの目的のためにいくつかの演算子を提供しています。このステップでは、値で要素を削除するために $pull を、位置で要素を削除するために $pop を使用する方法を学びます。
値に基づいて配列から特定の要素を削除するには、$pull 演算子を使用します。Alice のコースリストから「Physics」を削除しましょう。
db.students.updateOne(
{ name: "Alice Johnson" },
{ $pull: { courses: "Physics" } }
)
このコマンドは Alice のドキュメントを見つけ、彼女の courses 配列から「Physics」のすべての出現箇所を削除します。結果を確認しましょう。
db.students.find({ name: "Alice Johnson" }).pretty()
出力には、「Physics」が配列に含まれていないことが示されています。
[
{
_id: ObjectId("..."),
name: 'Alice Johnson',
age: 22,
courses: [ 'Mathematics', 'Computer Science', 'Data Science' ]
}
]
リスト内の値に一致する複数の要素を削除するには、$pullAll 演算子を使用できます。Bob のアクティビティから「Chess Club」と「Debate Team」の両方を削除しましょう。
db.students.updateOne(
{ name: "Bob Smith" },
{ $pullAll: { activities: ["Chess Club", "Debate Team"] } }
)
Bob のドキュメントの更新を確認しましょう。
db.students.find({ name: "Bob Smith" }).pretty()
出力は、指定されたアクティビティの削除を確認します。
[
{
_id: ObjectId("..."),
name: 'Bob Smith',
grades: [ 95, 87, 92 ],
activities: [ 'Robotics Club', 'Swimming Team' ]
}
]
配列の先頭または末尾から要素を削除する必要がある場合は、$pop 演算子を使用できます。最後の要素を削除するには 1 を、最初の要素を削除するには -1 を使用します。Alice のリストから最後のコースを削除しましょう。
db.students.updateOne(
{ name: "Alice Johnson" },
{ $pop: { courses: 1 } }
)
Alice のコースの最終状態を見てみましょう。
db.students.find({ name: "Alice Johnson" }).pretty()
出力には、最後の要素である「Data Science」が削除されたことが示されています。
[
{
_id: ObjectId("..."),
name: 'Alice Johnson',
age: 22,
courses: [ 'Mathematics', 'Computer Science' ]
}
]