Tôi có hai bảng/bộ sưu tập; Người dùng và nhóm. Người dùng có thể là thành viên của bất kỳ số lượng nhóm nào và người dùng cũng có thể là chủ sở hữu của bất kỳ số lượng nhóm nào. Trong một cơ sở dữ liệu quan hệ, tôi có thể có một bảng thứ ba được gọi là UserGroups với một cột UserID, một cột GroupID và một cột IsOwner.Cách tổ chức quan hệ nhiều đến nhiều trong MongoDB
Tôi đang sử dụng MongoDB và tôi chắc chắn có một cách tiếp cận khác cho loại quan hệ này trong cơ sở dữ liệu tài liệu. Tôi có nên nhúng danh sách các nhóm và nhóm làm chủ sở hữu bên trong bảng Người dùng dưới dạng hai mảng của ObjectID không? Tôi có nên lưu trữ danh sách các thành viên và chủ sở hữu trong bảng Nhóm dưới dạng hai mảng, phản ánh hiệu quả mối quan hệ gây ra sự sao chép thông tin quan hệ không?
Hoặc là một bảng UserGroups bắc cầu một khái niệm hợp pháp trong cơ sở dữ liệu tài liệu cho nhiều mối quan hệ?
Cảm ơn
Xem thêm câu trả lời cho [câu hỏi này] (http://stackoverflow.com/questions/2336700/mongodb-many-to-many-association) và [câu hỏi này] (http://stackoverflow.com/questions/ 5498692/nhiều-to-nhiều-mối quan hệ-trong-couchdb-hoặc-mongodb) –
Tôi biết điều này là khá cũ nhưng tôi tự hỏi về quy mô là tốt.Nếu bạn có 1000 nhóm thì sao? – FarscapePROJ
Điểm tuyệt vời-- Một tùy chọn khác, trong trường hợp này, là sử dụng tương đương với mối quan hệ giao tiếp từ cơ sở dữ liệu SQL - bộ sưu tập trung gian có hai khóa ngoài cho mỗi bộ sưu tập liên quan. Trong trường hợp này, bạn có thể thực hiện 3 truy vấn: (1) tìm kiếm bình thường() để nhận kết quả gốc, (2) truy vấn IN để nhận kết quả trung gian, và cuối cùng (3) truy vấn IN bằng cách sử dụng khóa ngoài trong kết quả trung gian để tìm hồ sơ trẻ em. (Đây là cách chúng tôi thực hiện tính năng này trong Đường nước) – mikermcneil