Я пытаюсь выяснить, какова производительность с 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 выполняет этот запрос и насколько эффективен этот запрос.Насколько я знаю, запрос не попадает в базу данных, что имеет смысл, потому что документ Topic уже загружен, а комментарии являются поддокументом этого.
Кто-нибудь будет так любезен, чтобы дать мнеинструкции о том, как Mongoid обрабатывает эти случаи?