Câu hỏi cốt lõi: dữ liệu con nên nằm bên trong document cha (embed) hay nằm ở collection riêng rồi trỏ tới (reference)?
Nên Embed (nhúng) khi:
- Dữ liệu con thuộc hẳn về cha và thường đọc cùng nhau.
- Số lượng con nhỏ và có giới hạn.
- Ít khi cần update con một cách độc lập.
Nên Reference (tham chiếu) khi:
- Dữ liệu con lớn hoặc tăng không giới hạn.
- Quan hệ nhiều-nhiều.
- Cần query con độc lập.
- Có nguy cơ vượt giới hạn 16MB của một document.
Ví dụ embed vài địa chỉ vào user (số lượng nhỏ):
javascript
{
_id: ObjectId("..."),
email: "a@example.com",
addresses: [{ city: "HCM", type: "shipping" }]
}Lưu ý: thiết kế MongoDB nên bám theo cách bạn truy vấn dữ liệu (query pattern), đừng bê nguyên 1-1 sơ đồ ERD của DB quan hệ sang.