MongoDB - ドキュメントの削除
こんにちは、未来のデータベース魔术師さんたち!今日は、MongoDBにおけるドキュメントの削除という興味深い世界に飛び込みます。新手の方でも心配しないでください。基本から始めて、少しずつ進んでいきます。このレッスンの終わりには、プロのようにドキュメントを削除できるようになるでしょう!始めましょう!
MongoDBにおけるドキュメントの削除の理解
本題に入る前に、MongoDBにおけるドキュメントの削除とは何かを理解しましょう。大きなカラフルなレゴブロックの箱(それがMongoDBデータベースです)を思い浮かべてください。そして、それぞれのレゴブロックがドキュメントです。時々、特定のブロックを箱から取り除きたいと思うかもしれません。それが今日学ぶ内容です。MongoDBデータベースからドキュメントを削除する方法です。
remove()メソッド
MongoDBにおけるドキュメント削除の主要なメソッドはremove()
メソッドです。データベースの掃除機のようなものです。不要なドキュメントを吸い取ります!
基本的な構文は以下の通りです:
db.collection.remove(query, justOne)
これを分解してみましょう:
-
db.collection
は削除したいコレクションです -
query
は削除するドキュメントの選択基準です -
justOne
はオプションパラメータ(後ほど説明します)
例1: 条件に一致するすべてのドキュメントの削除
例えば、students
というコレクションがあり、18歳の学生をすべて削除したい場合、以下のようにします:
db.students.remove({age: 18})
このコマンドはMongoDBに以下を指示します:「studentsコレクションに行って、年齢が18歳のすべてのドキュメントを削除して」。シンプルですね?
例2: 複数の条件に基づくドキュメントの削除
もっと具体的にしたい場合はどうでしょうか?18歳で名前が「John」の学生をすべて削除します:
db.students.remove({age: 18, name: "John"})
今度は、MongoDBは両方の条件に一致するドキュメントのみを削除します。
1つのドキュメントのみを削除
時々、複数のドキュメントが条件に一致する場合でも、1つのドキュメントのみを削除したい場合があります。その際に便利なのがjustOne
パラメータです!
例3: 1つのドキュメントのみを削除
18歳の学生を1人だけ削除するには:
db.students.remove({age: 18}, true)
ここでtrue
はjustOne
パラメータです。MongoDBに最初に一致したドキュメントを削除した後に停止するよう指示します。
すべてのドキュメントを削除
コレクションからすべてのドキュメントを削除したい場合、MongoDBはそれをサポートしています!
例4: すべてのドキュメントを削除
students
コレクションからすべてのドキュメントを削除するには:
db.students.remove({})
このコマンドには注意してください!全てのレゴブロックを箱から倒すようなものです。このコマンドを実行する前に、本当にそれをしたいかを確認してください。
高度な削除技術
基本を押さえたところで、より高度な技術を見てみましょう。
例5: 削除クエリに演算子を使用
MongoDBでは、より複雑な削除を行うために演算子を使用できます。例えば、20歳以上の学生をすべて削除するには:
db.students.remove({age: {$gt: 20}})
ここで$gt
は「より大きい」を意味します。このコマンドは年齢が20歳を超えるすべてのドキュメントを削除します。
例6: 配列の内容に基づくドキュメントの削除
配列フィールドを持っている場合、その内容に基づいてドキュメントを削除できます。例えば、「Math」が科目の配列にある学生をすべて削除するには:
db.students.remove({subjects: "Math"})
これは「Math」が科目の1つであるすべてのドキュメントを削除します。
ベストプラクティスとヒント
-
削除する前にクエリを必ず確認してください:误って削除するドキュメントが多くなることもあります。クエリを確認するようにしましょう!
-
findOne()
を使用してからremove()
を使用してください:クエリが正しいかどうかわからない場合は、同じ基準でfindOne()
を使用して、どのドキュメントが削除されるかを確認します。 -
deleteOne()
とdeleteMany()
を使用を検討してください:これらは、どのくらいのドキュメントを削除するかが明確な新しいメソッドです。 -
空のクエリには注意してください:空のクエリ
{}
はすべてのドキュメントに一致します! -
limit()
を使用して安全を期します:太多くのドキュメントを削除する恐れがある場合は、limit()
を使用して削除数を制限します。
メソッドのまとめ
以下は、今まで説明した削除メソッドのリファレンス表です:
メソッド | 説明 | 例 |
---|---|---|
remove() |
クエリに一致するすべてのドキュメントを削除 | db.collection.remove({age: 18}) |
remove() with justOne
|
クエリに一致する1つのドキュメントを削除 | db.collection.remove({age: 18}, true) |
deleteOne() |
クエリに一致する最初のドキュメントを削除 | db.collection.deleteOne({age: 18}) |
deleteMany() |
クエリに一致するすべてのドキュメントを削除 | db.collection.deleteMany({age: 18}) |
以上で、MongoDBのコレクションから安全かつ効果的にドキュメントを削除する知識を手に入れました。力には責任が伴いますので、クエリを確実に確認してからEnterキーを押すようにしてください!
快適なコードを書き、データベースは常にきれいに保ちましょう!
Credits: Image by storyset