MongoDB 데이터 삭제

MongoDBMongoDBBeginner
지금 연습하기

💡 이 튜토리얼은 영어로 번역되었습니다. 원본을 보려면 영어로 전환

소개

이 랩에서는 MongoDB 데이터베이스에서 데이터를 효과적으로 삭제하는 방법을 배우게 됩니다. 먼저 단일 문서를 삭제하는 것으로 시작하여 대량 삭제를 수행하고 특정 조건에 따라 데이터를 제거하는 기술을 탐구합니다. 마지막으로 전체 컬렉션을 지우고 삭제 결과를 확인하는 방법을 배우게 됩니다. 이러한 기술은 MongoDB 데이터베이스를 관리하고 데이터 무결성을 유지하는 데 필수적입니다.

이 랩은 다음 단계를 다룹니다: 단일 문서 삭제, 대량 삭제 수행, 조건별 제거, 컬렉션 데이터 지우기, 삭제 결과 확인. 이 랩을 마치면 필요에 따라 다양한 방법을 사용하여 MongoDB 에서 데이터를 삭제하는 방법에 대한 확실한 이해를 갖게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 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()은 지정된 기준과 일치하는 첫 번째 문서만 제거합니다.
  • 여러 문서가 일치하는 경우 첫 번째 문서만 삭제됩니다.
  • 이 메서드는 acknowledged (작업 성공) 및 deletedCount (삭제된 문서 수) 가 포함된 객체를 반환합니다.

모든 사용자를 찾아 삭제를 확인합니다:

db.users.find()

예상 출력은 John Doe 와 Bob Johnson 에 대한 두 개의 문서만 표시합니다.

대량 삭제 수행

이 단계에서는 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. 급여가 55000 미만인 Sales 부서의 직원을 제거합니다:
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 »