我试图弄清楚在对嵌入式文档进行查询时 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 如何处理这些案件的指示?