Về câu hỏi đầu tiên của bạn:
Bạn đặc biệt yêu cầu một cách tốt hơn để làm việc với id con được lưu trữ trong cấp độ gốc. Tôi khá chắc rằng không có cách nào tốt hơn để giải quyết vấn đề này, nếu nó phải là mô hình này.
Nhưng vấn đề này cũng tồn tại trong cơ sở dữ liệu quan hệ. Nếu bạn muốn lưu bài đăng của mình trong cơ sở dữ liệu quan hệ (sử dụng mẫu đó), trước tiên bạn cũng phải tạo nhận xét, lấy ID của nhận xét và sau đó cập nhật bài đăng. Được cho là, bạn có thể gửi tất cả các tác vụ này trong một yêu cầu duy nhất, điều này có thể hiệu quả hơn so với việc sử dụng mongoose, nhưng loại công việc cần phải thực hiện là như nhau.
Về câu hỏi thứ hai của bạn:
Lợi ích hơn so với biến thể A là, chẳng hạn như bạn có thể nhận được bài đăng và ngay lập tức biết nó có bao nhiêu nhận xét mà không cần yêu cầu mongodb xem qua các tài liệu có lẽ là rất nhiều.
Lợi ích so với biến thể B là bạn có thể lưu trữ nhiều tài liệu tham khảo hơn nhận xét trong một tài liệu (một bài đăng), thay vì toàn bộ nhận xét, vì giới hạn kích thước tài liệu 16MB mongos.
Tuy nhiên, Downside là một trong những điều bạn đã đề cập, rằng nó không hiệu quả để duy trì cấu trúc đó. Tôi hiểu rằng đây chỉ là một ví dụ để giới thiệu kịch bản, vì vậy đây là những gì tôi sẽ làm:Tôi sẽ quyết định tùy từng trường hợp sẽ sử dụng cái gì.
-
Nếu tài liệu sẽ được đọc nhiều và không được viết nhiều, VÀ nó không có khả năng lớn hơn 16MB:Nhúng tài liệu con. bằng cách này, bạn có thể lấy tất cả dữ liệu trong một truy vấn.
-
Nếu bạn cần tham chiếu tài liệu từ nhiều các tài liệu khác VÀ dữ liệu của bạn thực sự phải nhất quán, khi đó bạn không có lựa chọn nào khác ngoài việc tham chiếu nó.
-
Nếu bạn cần tham chiếu tài liệu từ nhiều các tài liệu khác NHƯNG sự nhất quán về dữ liệu không phải là VÀ quá quan trọng áp dụng các hạn chế từ dấu đầu dòng đầu tiên, sau đó nhúng các tài liệu con và viết mã để giữ cho dữ liệu của bạn nhất quán.
-
Nếu bạn cần tham chiếu tài liệu từ nhiều các tài liệu khác và chúng được viết cho rất nhiều, nhưng không được đọc thường xuyên, có lẽ bạn nên tham khảo chúng, vì điều này dễ viết mã hơn, vì bạn không cần phải viết mã để đồng bộ hóa dữ liệu trùng lặp.
Trong trường hợp cụ thể này (bài đăng / nhận xét) tham chiếu đến cha mẹ từ đứa trẻ (cho đứa trẻ biết cha mẹ _id
) có lẽ là một ý tưởng hay, vì nó dễ bảo trì hơn cách khác và tài liệu có thể lớn hơn 16MB nếu chúng được nhúng trực tiếp. Nếu tôi biết chắc chắn rằng tài liệu sẽ KHÔNG lớn hơn 16MB, thì việc nhúng chúng sẽ tốt hơn vì truy vấn dữ liệu theo cách đó nhanh hơn