MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Hướng dẫn:Người dùng có người hâm mộ

Làm thế nào về một liên kết tự tham chiếu:

class User
  include Mongoid::Document
  references_many :fans, 
                  :class_name => 'User', 
                  :stored_as => :array, 
                  :inverse_of => :fan_of

  references_many :fan_of, 
                  :class_name => 'User', 
                  :stored_as => :array, 
                  :inverse_of => :fans
end

# let's say we have users: al, ed, sports_star, movie_star    
sports_star.fans << al
movie_star.fans << al
sports_star.fans << ed
movie_star.fans << ed

movie_star.fans  # => al, ed
al.fan_of        # => sports_star, movie_star

Vấn đề là bạn đang cố gắng thực hiện liên kết quan hệ chỉ sử dụng các tài liệu nhúng. Khi bạn có Fan được nhúng bên trong User , bạn chỉ có thể truy cập Fan thông qua User chính của nó . Bạn không thể làm điều gì đó như Fan.find(some_id) vì không có bộ sưu tập Fan Hồ sơ.

Cuối cùng, MongoDB sẽ hỗ trợ các bộ sưu tập ảo cho phép bạn thực hiện việc này. Hiện tại, bạn phải sử dụng kết hợp kiểu quan hệ. Nếu bạn muốn sử dụng tài liệu nhúng trong trường hợp này, bạn phải tạo một số phương pháp tùy chỉnh xấu và không hiệu quả để tìm kiếm thông qua các bản ghi gốc.

Với MongoDB và Mongoid, tôi thấy rằng bạn có thể chuyển đổi giữa các liên kết được nhúng và quan hệ một cách dễ dàng. Mối quan hệ kiểu SQL và mối quan hệ nhúng đều có vị trí của chúng và có thể được sử dụng cùng nhau để tạo ra hiệu quả tuyệt vời.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB không bằng

  2. Gọi Hàm db.system.js trong $ where

  3. mongoDB:cách đảo ngược $ unwind

  4. Cách dễ dàng hơn để cập nhật một mảng với MongoDB

  5. MongoDB và Robomongo:Không thể kết nối (xác thực)