Uncategorized

MongoDB: Tạo mối quan hệ

MongoDB: Tạo mối quan hệ

| |

Để tạo mối quan hệ (relationship) trong MongoDB, có thể nhúng (embed) hoặc tham chiếu (reference) đến Document khác.

MongoDB có cách hoạt động khác với cơ sở dữ liệu quan hệ, kể cả về mặt quan hệ giữa các phần tử (Relationships).

Cụ thể, để tạo relationship, chúng ta sẽ sử dụng 2 phương thức sau:

  • Embeded documents (Nhúng)
  • Referenced  documents (Tham chiếu)

Quan hệ nhúng

Trong MongoDB, chúng ta có thể nhúng document vào bên trong document khác. Khi đó, mỗi document sẽ tự chứa mối quan hệ của riêng nó. Giống như những gì chúng ta đã làm trong bài học trước Tạo mới Document.

Quan hệ một – một

Quan hệ 1 -1 là khi document cha có duy nhất 1 con, và document con cũng có duy nhất 1 cha.

Giả sử mỗi diễn viên chỉ có duy nhất 1 địa chỉ và một địa chỉ thuộc về duy nhất một diễn viên:

db.cast.insert({
  _id: 2,
  name: "Charlize Theron",
  address: {
    street: "Stack Road",
    city: "New York",
    country: "United States"
  }
})

Kết quả:

WriteResult({ "nInserted" : 1 })

Quan hệ một – nhiều

Quan hệ một – nhiều là khi một document cha có nhiều document con, nhưng một document con chỉ có duy nhất 1 document cha.

Ví dụ một một diễn viên có thể đóng vai chính nhiều bộ phim, nhưng một bộ phim chỉ có duy nhất 1 vai chính

db.cast.insert({
  _id: 3,
  name: "Seth Rogen",
  movies: [
    {
      movie: "Long Shot",
      year: 2019,
      genre: "Comendy"
    },
    {
      movie: "The Lion King",
      year: 2019,
      genre: "Animation"
    }
  ]
})

Kết quả:

WriteResult({ "nInserted" : 1 })

Quan hệ tham chiếu

Thay vì sử dụng quan hệ nhúng như chúng ta đã làm ở trên, khi sử dụng tham chiếu, document con sẽ tách biệt hoàn toàn với document cha:

Document cha

db.movie.insert({
  _id: 1,
  movieName: "True Detective"
})

Document con

db.cast.insert({
  _id: 4,
  name: "Matthew McConaughey",
  movie_id: 1
})
db.cast.insert({
  _id: 5,
  name: "Woody Harrelson",
  movie_id: 1
})
db.cast.insert({
  _id: 6,
  name: "Michelle Monaghan",
  movie_id: 1
})

 

    Previous

    MongoDB: Sắp xếp kết quả truy vấn

    MongoDB: Cập nhật Document

    Next

    Leave a Comment

    Subscribe

    A lead capture sample form