Một dự án có thể có bao nhiêu hoạt động? Nếu không có giới hạn thì tốt hơn hết bạn nên tạo một bộ sưu tập cấp gốc cho các hoạt động. Trong MongoDB, kích thước tài liệu BSON tối đa là 16 MB . Đó là bạn không thể lưu trữ tất cả các dự án và hoạt động của chúng trong một tài liệu duy nhất (tài liệu tổ chức).
Tôi sẽ tạo 3 bộ sưu tập cụ thể là - tổ chức, dự án và hoạt động.
- Mỗi tổ chức nên có một tài liệu trong các tổ chức bộ sưu tập tương tự như bộ sưu tập bạn có trong Firestore.
- Mỗi dự án phải có một tài liệu trong các dự án bộ sưu tập có chứa trường "organizationID" để bạn có thể truy vấn các dự án của một tổ chức cụ thể bằng cách sử dụng ID của họ. Điều này tương đương với một tài liệu trong bộ sưu tập phụ dự án của bạn. Mỗi dự án cũng phải có ID duy nhất của riêng dự án đó.
- Mỗi hoạt động phải có một tài liệu trong các hoạt động tập hợp chứa trường "projectID" để có thể truy xuất các hoạt động của một dự án cụ thể.
Tôi đã thêm organizationID
bổ sung đó , projectID
các trường ngay cả khi bạn có _id
chỉ trong trường hợp bạn muốn có ID tài liệu Firestore ở đó để có các truy vấn song song dễ dàng hơn.
Bạn không phải lo lắng về 16 MB Giới hạn kích thước tài liệu theo cách này và sẽ dễ dàng hơn khi truy vấn cả dự án và hoạt động miễn là bạn có đúng ID.
Truy vấn các hoạt động của một dự án nhất định:
await db.collection("activities").find({projectID: "myProjectID"}).toArray()
Sau đó, việc bạn muốn viết truy vấn với phép chiếu, tổng hợp, v.v. tùy thuộc vào bạn như thế nào.