Chúng tôi cần có thể nhanh chóng thực hiện các truy vấn trên toàn bộ bạn bè và bạn bè của người dùng. Điều này sẽ tương đối đơn giản trong một cơ sở dữ liệu quan hệ, nhưng tôi phần nào bị mắc kẹt theo cách tốt nhất để hoàn thành nó trong MongoDB. Chúng tôi lưu trữ các ID người dùng của bạn bè của người dùng trong một mảng trong tài liệu của người dùng, vì vậy giải pháp rõ ràng là để làm điều này:Mô hình hóa bạn bè của các mối quan hệ bạn bè trong MongoDB
- Kéo tất cả các ID người dùng bạn từ người dùng doc
- Kéo tất cả các mảng người bạn từ tài liệu người dùng của những người bạn đó (sử dụng $ trong truy vấn trên tất cả ID người bạn), kết hợp ứng dụng vào một bộ, sau đó kết hợp ứng dụng đó với ID người dùng cấp một để có được tất cả bạn bè và bạn bè của bạn bè
- Sử dụng bộ đó thực hiện truy vấn cuối cùng (sử dụng $ in) trên tất cả bạn bè và bạn bè của bạn bè
Trong khi đơn giản, điều này có vẻ giống như một số lượng rất lớn của qua lại, so với những gì chúng ta có thể làm với một tham gia trong một cơ sở dữ liệu quan hệ. Có cách nào hiệu quả hơn để làm điều này trong MongoDB hay đây là vấn đề phù hợp nhất cho RDBMS?
Điều này giả định rằng mối quan hệ bạn bè luôn luôn là lẫn nhau ... nếu alex là bạn với jon, hơn jon cũng phải là bạn với alex. – Jay
Điều gì về việc kết bạn với nhau? –
Xem https://gist.github.com/levicook/4132037 cho bạn bè chung – rodi