【问题标题】:How would I list down all comments in order of created_at?我如何按 created_at 的顺序列出所有评论?
【发布时间】:2012-05-11 03:33:51
【问题描述】:

我有:

class Article
  include Mongoid::Document

  embeds_many :comments
end

class Comment
  include Mongoid::Document

  embedded_in :article
end

因为CommentArticle 中的嵌入文档。我如何按created_at 的顺序列出ALL 评论?

我应该构造它以使 Comment 不是嵌入在 Article 中还是有上述架构的方法?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid


    【解决方案1】:

    如果您尝试在他们文章的上下文之外查询 cmets,那么显然评论应该是顶级实体,而不是嵌入式实体。

    在嵌入式情况下,您可以使用 map-reduce 或聚合框架。常规查询语言在这里对您没有帮助。

    【讨论】:

    • 嗯,但在这种情况下,Comment 不应该是顶级实体。由于文章是。如果 map-reduce 是唯一的方法。你能用我上面描述的模式举一个简单的例子吗
    • 如果您自己查询 cmets,它是一个顶级实体。可能有不止一个顶级实体。不要与某些层次结构中的根节点混淆。
    • 您建议使用 Article->Comment(将评论嵌入到文章中)和 Comment->Article(将文章嵌入到评论中)只是为了拉取所有 cmets 并通过 create_at 进行排序?有点多余..
    • 我想说,不要在这里嵌入任何东西。参考文章评论。
    【解决方案2】:

    为什么不只是default_scope :order => 'created_at DESC'? (或 ASC)。

    无论如何,您都会希望它们在整个站点中保持一致的顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多