我正在试图弄清楚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如何处理这些案件吗?