1

関連からの値を持つコレクションを注文したいと思います。

例:

次のような投稿の複数の関連付けを取得しました。

  • コメント
  • 評価
  • アタッチメント

次のようなこの関連付けを通じて投稿を注文するにはどうすればよいですか:

  • order_by most_commented
  • order_by most_rated
  • order_by most_associations ....

ありがとうございました。

4

1 に答える 1

1

これで質問に答えられます(^^)

Mongoidバージョン 3.1では、アクティブ レコード機能「counter_cache」が使用可能でした。たとえば、参照されたコメントを含む投稿を取得しました。

class Post
  include Mongoid::Document
  field :body, type: String

  has_many :comments                                                                                                                                                                             
end



class Comment
  include Mongoid::Document
  field :body, type: String

  belongs_to :post, counter_cache: true                                                                                                                                                                             
end

この場合、すべての投稿インスタンスは、投稿で参照されるコメントの数を含む comments_count フィールドを取得します。

これで、comments_count フィールドを使用して投稿を並べ替えることができます。このフィールドは、少なくとも 1 つのコメントが存在する場合にのみ使用できることに注意してください。または、モデルのデフォルト値を使用して、comments_count フィールドを明示的に設定します。

于 2013-05-08T16:49:02.000 に答える