проблема упорядочения - PullRequest
       13

проблема упорядочения

3 голосов
/ 03 декабря 2010

Я использовал mongoid для хранения данных. У меня есть сценарий, в котором я должен отсортировать родителей по количеству их иждивенцев. Моя модель проста:

Ссылка на родительскую модель_ множество зависимостей stored_as => array
Модель зависимых от многих родителей stored_as => array

Я не хочу перебирать родителей, находить количество иждивенцев, сохранять их в массиве и выводить их на мой взгляд.

Мне нужно отсортировать родителей по количеству иждивенцев всего одним запросом. Это возможно?

Спасибо.

1 Ответ

8 голосов
/ 05 декабря 2010

Вам нужно будет добавить поле со счетчиком количества иждивенцев и поддерживать его в актуальном состоянии с помощью обратного вызова.Что-то вроде:

class MyModel
  include Mongoid::Document

  references_many :things
  field :thing_count, :type => Integer

  before_update :set_thing_count
  def set_thing_count
    self.thing_count = self.things.count
  end
end

Тогда ваша сортировка будет просто:

MyModel.asc(:thing_count)

Mongoid пока не предоставляет хороший механизм запросов для сортировки, но добавить денормализованное поле подсчета довольно простои, вероятно, лучше для производительности в любом случае.Надеюсь, это поможет!

...