使用Mongoid / MongoDB(Rails)查询嵌入式文档

时间:2011-03-02 16:45:12

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

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

用例:

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

{ 
  "_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如何处理这些案件吗?

0 个答案:

没有答案