MongoDB のデータを削除する

MongoDBMongoDBBeginner
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、MongoDB データベース内のデータを効果的に削除する方法を学びます。まずは単一のドキュメントを削除し、次にバルク削除と特定の条件に基づくデータの削除手法を検討します。最後に、コレクション全体をクリアし、削除結果を検証する方法を学びます。これらのスキルは、MongoDB データベースの管理とデータの整合性の維持に欠かせないものです。

この実験では、以下の手順が扱われます:単一ドキュメントの削除、バルク削除の実行、条件に基づく削除、コレクション データのクリア、および削除結果の検証。この実験が終了するまでに、必要に応じたさまざまな方法を使って MongoDB 内のデータを削除する方法を十分に理解できるようになります。

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 97.44%です。学習者から 97.92% の好評価を得ています。

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb(("MongoDB")) -.-> mongodb/AggregationOperationsGroup(["Aggregation Operations"]) mongodb/BasicOperationsGroup -.-> mongodb/start_mongodb_shell("Start MongoDB Shell") mongodb/BasicOperationsGroup -.-> mongodb/delete_document("Delete Document") mongodb/BasicOperationsGroup -.-> mongodb/bulk_delete_documents("Bulk Delete Documents") mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") mongodb/QueryOperationsGroup -.-> mongodb/query_with_conditions("Query with Conditions") mongodb/AggregationOperationsGroup -.-> mongodb/aggregate_group_totals("Aggregate Group Totals") subgraph Lab Skills mongodb/start_mongodb_shell -.-> lab-420822{{"MongoDB のデータを削除する"}} mongodb/delete_document -.-> lab-420822{{"MongoDB のデータを削除する"}} mongodb/bulk_delete_documents -.-> lab-420822{{"MongoDB のデータを削除する"}} mongodb/find_documents -.-> lab-420822{{"MongoDB のデータを削除する"}} mongodb/query_with_conditions -.-> lab-420822{{"MongoDB のデータを削除する"}} mongodb/aggregate_group_totals -.-> lab-420822{{"MongoDB のデータを削除する"}} end

単一ドキュメントの削除

このステップでは、deleteOne() メソッドを使って MongoDB 内の単一ドキュメントを削除する方法を学びます。まず、MongoDB シェルを起動します:

mongosh

削除の練習用にいくつかのドキュメントを含むサンプル コレクションを作成しましょう:

use mylab_database
db.users.insertMany([
    { name: "John Doe", age: 30, email: "[email protected]" },
    { name: "Jane Smith", age: 25, email: "[email protected]" },
    { name: "Bob Johnson", age: 35, email: "[email protected]" }
])

出力例:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("...")
  }
}

単一ドキュメントを削除するには、deleteOne() メソッドを使います。このメソッドを使うと、一意の識別子または特定の条件に基づいて特定のドキュメントを削除できます:

db.users.deleteOne({ name: "Jane Smith" })

予想される出力:

{ acknowledged: true, deletedCount: 1 }

コマンドを分解してみましょう:

  • deleteOne() は指定された条件に一致する最初のドキュメントのみを削除します
  • 複数のドキュメントが一致する場合、最初の 1 つのみが削除されます
  • このメソッドは、acknowledged(操作成功)と deletedCount(削除されたドキュメントの数)を含むオブジェクトを返します

すべてのユーザーを検索して削除を検証しましょう:

db.users.find()

予想される出力は、John Doe と Bob Johnson の 2 つのドキュメントのみが表示されます。

バルク削除の実行

このステップでは、MongoDB の deleteMany() メソッドを使って一度に複数のドキュメントを削除する方法を検討します。

サンプル データを作成しましょう:

use mylab_database
db.users.insertMany([
    { name: "Alice Wilson", age: 28, status: "inactive" },
    { name: "Charlie Brown", age: 40, status: "inactive" },
    { name: "David Lee", age: 35, status: "active" },
    { name: "Eve Taylor", age: 45, status: "inactive" }
])

出力例:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("..."),
    '3': ObjectId("...")
  }
}

次に、deleteMany() を使って "inactive" ステータスのすべてのユーザーを削除します:

db.users.deleteMany({ status: "inactive" })

予想される出力:

{ acknowledged: true, deletedCount: 3 }

deleteMany() に関する要点:

  • 指定された条件に一致するすべてのドキュメントを削除します
  • 削除されたドキュメントの総数を返します
  • 複数のレコードを同時に削除する効率的な方法を提供します

残っているドキュメントを検証しましょう:

db.users.find()

予想される出力は、コレクション内のアクティブなユーザーのみが表示されます。

条件に基づく削除

このステップでは、MongoDB で複雑な条件を使ってドキュメントを削除する方法を学びます。

サンプル コレクションを作成します:

use mylab_database
db.employees.insertMany([
    { name: "John Doe", age: 25, department: "Sales", salary: 50000 },
    { name: "Jane Smith", age: 35, department: "Marketing", salary: 60000 },
    { name: "Bob Johnson", age: 45, department: "Sales", salary: 55000 },
    { name: "Alice Brown", age: 30, department: "HR", salary: 52000 }
])

出力例:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("..."),
    '3': ObjectId("...")
  }
}
  1. 40 歳以上の従業員を削除する:
db.employees.deleteMany({ age: { $gt: 40 } })

予想される出力:

{ acknowledged: true, deletedCount: 1 }

解説:

  • $gt 演算子は「より大きい」を意味します
  • このコマンドは、年齢が 40 より大きいドキュメントを削除します
  1. 55,000 未満の給与で営業部門の従業員を削除する:
db.employees.deleteMany({
    department: "Sales",
    salary: { $lt: 55000 }
})

予想される出力:

{ acknowledged: true, deletedCount: 1 }

解説:

  • $lt は「より小さい」を意味します
  • 部署と給与の両方の条件に一致するドキュメントを削除します

残っているドキュメントを検証します:

db.employees.find()

コレクション データのクリア

このステップでは、MongoDB コレクションからデータを完全にクリアする方法を検討します。

サンプル コレクションを作成します:

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electronics" },
  { name: "Smartphone", price: 500, category: "Electronics" },
  { name: "Headphones", price: 100, category: "Electronics" }
])

方法 1: deleteMany() を使ってすべてのドキュメントを削除する:

db.products.deleteMany({})

予想される出力:

{ acknowledged: true, deletedCount: 3 }

解説:

  • コレクション構造を削除することなくすべてのドキュメントを削除します
  • 空のフィルタ {} はすべてのドキュメントを対象とします

コレクションが空であることを検証します:

db.products.find()

方法 2: drop() を使ってコレクション全体を削除する:

サンプル データを再挿入しましょう:

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electronics" },
  { name: "Smartphone", price: 500, category: "Electronics" },
  { name: "Headphones", price: 100, category: "Electronics" }
])

コレクションを削除します:

db.products.drop()

予想される出力:

true

解説:

  • コレクションとそのメタデータを完全に削除します
  • コレクション全体の永続的な削除

コレクションを検索しようとすると:

db.products.find()

これはコレクションが存在しなくなったことを示すエラーが発生します。

削除結果の検証

この最後のステップでは、MongoDB での削除操作を検証する手法を検討します。

サンプル コレクションを作成します:

db.employees.insertMany([
    { name: "Alice", department: "HR", salary: 50000 },
    { name: "Bob", department: "Sales", salary: 45000 },
    { name: "Charlie", department: "Marketing", salary: 55000 },
    { name: "David", department: "Sales", salary: 40000 }
])
  1. 低給与の従業員を削除して検証する:
db.employees.deleteMany({ salary: { $lt: 45000 } })
const remainingEmployees = db.employees.countDocuments()
print("Remaining employees:", remainingEmployees)

予想される出力:

Remaining employees: 5
  1. find() を使って削除を検証する:
const lowSalaryEmployees = db.employees.find({ salary: { $lt: 45000 } }).count()
print("Low salary employees after deletion:", lowSalaryEmployees)

予想される出力:

Low salary employees after deletion: 0
  1. 特定の部署の人数を確認する:
const salesEmployees = db.employees.countDocuments({ department: "Sales" })
print("Sales department employees:", salesEmployees)

予想される出力:

Sales department employees: 1

包括的な検証:

print("Total employees:", db.employees.countDocuments())
print("Employees by department:")
db.employees.aggregate([
    { $group: { _id: "$department", count: { $sum: 1 } } }
])

予想される出力は、従業員の総数と部署別の内訳が表示されます。

[
  { _id: 'Marketing', count: 2 },
  { _id: 'Sales', count: 1 },
  { _id: 'HR', count: 2 }
]

まとめ

この実験では、指定された条件に一致する最初のドキュメントを削除する deleteOne() メソッドを使って単一のドキュメントを削除する方法を学びました。また、特定の条件に一致する複数のレコードを効率的に削除することができる deleteMany() メソッドを使ってバルク削除を行う方法も検討しました。さらに、条件に基づいてドキュメントを削除し、コレクション全体のデータをクリアし、削除結果を検証する方法を学びました。

この実験の主な要点は、MongoDB でデータを削除するためのさまざまなアプローチであり、個々のドキュメントの削除から特定の基準に基づく大量削除までです。これらのスキルは、データベースを効果的に管理し、データの整合性を維持するために不可欠です。

OSZAR »