sql >> データベース >  >> NoSQL >> MongoDB

モデル属性にオブジェクトのコレクションが含まれています

    acts_as_list を使用しました ソート可能なオブジェクトを非常にうまく実装するため。さらに、ページの要素を、ここではPageElementと呼ばれる別のモデルに抽象化します。 。

    NoSQLデータベースに切り替える必要はないと思います(このアプローチに反対するものは何もありませんが)。これが私が考えていることの大まかなスケッチです:

    class Page < ActiveRecord::Base
      has_many :page_elements, :order => 'position'
      has_many :todo_lists,  :through => :page_elements, :source => :element, :source_type => 'TodoList'
      has_many :notes,       :through => :page_elements, :source => :element, :source_type => 'Note'
      has_many :files,       :through => :page_elements, :source => :element, :source_type => 'File'
      has_many :discussions, :through => :page_elements, :source => :element, :source_type => 'Discussion'
    end
    
    class PageElement < ActiveRecord::Base
      belongs_to :page
      belongs_to :element, :polymorphic => true
      acts_as_list :scope => :page
    end
    
    class TodoList < ActiveRecord::Base
      has_one :page_element, :as => :element
      has_one :page, :through => :page_elements 
    end
    
    class Note < ActiveRecord::Base
      has_one :page_element, :as => :element
      has_one :page, :through => :page_elements 
    end
    
    class File < ActiveRecord::Base
      has_one :page_element, :as => :element
      has_one :page, :through => :page_elements 
    end
    
    class Discussion < ActiveRecord::Base
      has_one :page_element, :as => :element
      has_one :page, :through => :page_elements 
    end
    



    1. mongodbでgroupbyを使用してMax()を選択します

    2. MongoDB + ElasticsearchまたはElasticsearchのみ?

    3. マングース、入力されたフィールドでクエリを並べ替える

    4. マングースでページ付けを行う方法