더북(TheBook)

이제 books 컬렉션에는 4권의 책이 들어있을 것이다. 다음에 나온 remove 명령어를 실행하면 저자가 Kurt Vonnegut, Jr.인 두 권의 책이 삭제될 것이다.

db.books.remove({"author": "Kurt Vonnegut, Jr."})

문서를 삭제할 때는 혹시 다른 문서에서 삭제할 문서를 참조하고 있지는 않은지 특별히 주의해야 한다. 예를 들어 고객과 고객이 주문한 책 정보가 있는 간단한 주문 컬렉션이 있다고 해보자.


{
  {"customer_id" : 183747, "book_id": 639397},
  {"customer_id" : 165301, "book_id": 639397},
  {"customer_id" : 183747, "book_id":1298770},
  …
}

다음 명령어를 실행하면 ID가 1298747과 1298770인 두 권의 책이 제거될 것이다.

db.books.remove({"author": "Kurt Vonnegut, Jr."})

주문 컬렉션에는 삭제한 두 개의 ID를 참조하고 있는 문서가 남아 있을 것이다. 만약 애플리케이션 코드에서 ID값이 1298747과 1298770인 책을 찾으려고 시도하면 실패하게 될 것이다.

Note 관계형 데이터베이스는 이러한 유형의 문제를 방지하도록 설계할 수 있다. 하지만 문서 데이터베이스는 이러한 유형의 데이터 무결성을 관리하기 위해 애플리케이션 코드에 의존한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.