2

我试图弄清楚在对嵌入式文档进行查询时 Mongoid 的性能如何。我对 Mongoid 和 MongoDB 很陌生,所以如果你发现任何你认为不好的做法,请告诉我。

一个用例:

假设我有一个包含许多嵌入评论的“帖子”。评论是线程化的,每个线程化的评论都有一个 parent_id 字段,指定它们所属的父评论。“发布”文档的示例:

{ 
  "_id": 1, "username": "Foo", "body": "Hi!", 
  "comments": [ 
                {"_id": 123, "body": "<3"}, 
                {"_id": 124, "body": "</3", "parent_id": "123"}, 
                ... 
              ]
}

现在假设一个帖子有大量的评论。当我保存新评论时,我想确定新评论与多少评论共享其父评论。所以我这样做:

class Comment
  include Mongoid::Document
  field :body
  field :parent_id
  embedded_in :post, :inverse_of => :comments

  before_save :determine_amount
  def determine_amount
    return if self.parent_id.blank?
    amount = self.node.comment.where(:parent_id => self.parent_id).count

    # Do something with it...
  end
end

我想知道 Mongoid 在哪里以及如何进行此查询,以及此查询的效率如何。据我所知,查询没有命中数据库,这是有道理的,因为主题文档已经加载,而评论是它的子文档。

谁能给我关于 Mongoid 如何处理这些案件的指示?

4

0 回答 0