본문 바로가기
SQL

9) mongoDB Tutorial - Nested Documents

by Downy_J 2023. 10. 6.
728x90
반응형
SMALL

{
  _id: ObjectId("651ea1c50f2a995b7b1b0d64"),
  title: 'Name of the Wind',
  author: 'Patrick Rothfuss',
  pages: 500,
  genres: [
    '문학작품',
    '동화'
  ],
  rating: 9,
}

mongoDB에선 저기 왼쪽의 key를 필드라 말한다

 

json과 비슷하게 생긴 구조이며

 

저 하나의 Documents 안에 중첩으로 또 들어갈수도 있다

{
  _id: ObjectId("651ea1c50f2a995b7b1b0d64"),
  title: 'Name of the Wind',
  author: 'Patrick Rothfuss',
  pages: 500,
  genres: [
    '문학작품',
    '동화'
  ],
  rating: 9,
  "stock": {
  	"count": 21,
    "price": 7,000원
    }
}

가격부분과 제고량이 들어갔다

 

또는 이 책에 대한 리뷰 내용이 들어갈수도 있을것이다

{
  _id: ObjectId("651ea1c50f2a995b7b1b0d64"),
  title: 'Name of the Wind',
  author: 'Patrick Rothfuss',
  pages: 500,
  genres: [
    '문학작품',
    '동화'
  ],
  rating: 9,
  "reviews": [
  	{"userName": "jerry", "commentTitle": "So Good content!", "comment": "Thank You"},
  	{"userName": "terry", "commentTitle": "So Good content!", "comment": "Thank You"},
  	{"userName": "gerry", "commentTitle": "So Good content!", "comment": "Thank You"}
  ]
}

각 책의 Document에

reviews 필드와 그 값이 될 추가 필드를 추가 시킬수 있다

그리고 해당 필드는 Document의 배열일수도 있고

중첩된 각각의 Document는 이 책에 대한 리뷰를 나타낸다

그리고 그 필드들은 작성자이름, 댓글제목, 댓글 등으로 나타내질수 있다

 

해당 책을 가져오게 되면 그 책에 대한 리뷰 목록도 함께 갖고오게 되는데

이는 해당 데이터를 웹페이지 등에 함께 쓰이게 되며

책의 세부 정보를 나타날때 좋다

 

이제 이 중첩된 문서나 포함된 문서를 사용하는 이 접근 방식은 몇가지 이점이 있다

  • 리뷰 데이터를 쉽게 저장하고 관리할 수 있다
  • 리뷰 데이터를 별도의 데이터베이스나 테이블에 저장할 필요가 없으므로 데이터 관리가 간편해짐
  • 리뷰 데이터를 효율적으로 검색가능
  • 특정 사용자나 특정 주제에 대한 리뷰를 검색하는게 가능함
  • 읽기 성능이 향상됨

중첩문서 함 만들어 보자

원래 있던 7개의 책 전부 밀어버리고

다시 만들거다

 

중첩 Documents를 쓸거고 그럼 이제 해보자

 

 

 

 

 

 

 

이런식으로... 넣을거다

 

 

 

 

db.books.insertMany([{title: "The Light Fantastic", author: "Terry Partchett", pages: 250, rating: 6, genres: ["fantasy", "magic"], reviews: [{name: "luigi", body: "it was pretty good"}, {name: "bowser", body: "loved it!!!"}]}, {title: "The Name of the Wind", author: "patrick Rothfuss", pages:500, rating: 10, genres:["fantasy"], reviews: [{name: "peach", body: "one of my favs"}]}, {title: "The Color of Magic", author: "Terry Partchett", pages:350, rating: 8, genres:["fantasy", "masic"], reviews: [{name: "luigi", body: "it was ok"}, {name: "bowser", body: "really good book!!"}]}, {title: "1984", author: "George Orwell", pages:300, rating: 6, genres:["sci-fi", "dystopin"], reviews: [{name: "peach", body: "not my cup of tea"}, {name: "mario", body: "meh"}]}])

 하.. 괄호 오타 나도 몰름

아무튼 넣고 나면

쭈루룩 들어간거 확인~!

JOIN이랑은 다른 개념인거지..?

728x90