Tôi biết câu trả lời này hơi muộn, nhưng đối với MongoDB, có lẽ bạn đang xem xét điều gì đó hơi khác một chút.
Mongo là schemaless, vì vậy khái niệm "tablePerHierarchy" không nhất thiết phải hữu ích.
Giả sử như sau
class A
property X
property Y
property Z
class B inherits from A
property W
Trong RDMS, bạn có thể sẽ có một cái gì đó như thế này
table A: columns X, Y, Z
table B: columns X, Y, Z, W
Nhưng MongoDB không có lược đồ. Vì vậy, bạn không cần phải cấu trúc dữ liệu theo cách này. Thay vào đó, bạn sẽ có một "bộ sưu tập" chứa tất cả các đối tượng (hoặc "tài liệu") thuộc loại A hoặc B (hoặc C ...).
Vì vậy, bộ sưu tập của bạn sẽ là một loạt các đối tượng như thế này:
{"_id":"1", "X":1, "Y":2, "Z":3}
{"_id":"2", "X":5, "Y":6, "Z":7, "W":6}
Bạn sẽ nhận thấy rằng tôi đang lưu trữ các đối tượng kiểu A ngay bên cạnh các đối tượng kiểu B. MongoDB thực hiện điều này rất dễ dàng. Chỉ cần kéo một Tài liệu từ Bộ sưu tập lên và nó "kỳ diệu" có tất cả các trường / thuộc tính thích hợp.
Tuy nhiên, nếu bạn có "đối tượng dữ liệu" hoặc "thực thể", bạn có thể làm cho cuộc sống của mình dễ dàng hơn bằng cách thêm một loại.
{"_id":"1", "type":"A", "X":1, "Y":2, "Z":3}
{"_id":"2", "type":"B", "X":5, "Y":6, "Z":7, "W":6}
Điều này giúp bạn dễ dàng viết một lớp factory để tải các đối tượng của bạn.