У меня есть модель с этой схемой:Сортировка по вложенному атрибуту, Mongoid
class Treatment
include Mongoid::Document
field :value, type: Money # money-rails gem
end
это поле значение получить сохраненные в БД, как value: {"cents"=>313, "currency_iso"=>"EUR"}
Я хотел бы найти все процедуры и отсортировать их по cents
стоимость.
Сейчас это как я это делаю:
Treatment.collection.find().sort({value: { :cents => 1 }})
Это используется драйвер Мопед. Как я могу это сделать, используя простой Mongoid?
Редактировать1.
[6] pry(main)> Treatment.all.only(:value).asc('value.cents').entries
=> [#<Treatment _id: 515854c2a1d24ccb1f000005, value: {"cents"=>2849, "currency_iso"=>"EUR"}>,
#<Treatment _id: 515854c2a1d24ccb1f000006, value: {"cents"=>313, "currency_iso"=>"EUR"}>,
#<Treatment _id: 515854c2a1d24ccb1f00000f, value: {"cents"=>1214, "currency_iso"=>"EUR"}>,
#<Treatment _id: 515854c2a1d24ccb1f000010, value: {"cents"=>1795, "currency_iso"=>"EUR"}>,
#<Treatment _id: 515854c2a1d24ccb1f000011, value: {"cents"=>105, "currency_iso"=>"EUR"}>,
#<Treatment _id: 515854c2a1d24ccb1f000012, value: {"cents"=>2547, "currency_iso"=>"EUR"}>
Редактировать2.
MongoDB: стабильная 2.4.1-x86_64 Mongoid (3.1.2)
Это была моя первая мысль. Но это просто не работает. Записи не упорядочены. – Nerian
Оформить заказ Редактировать – Nerian
Какую версию mongoid/mongodb вы используете? Я опубликовал полный пример, который работает для меня с использованием Mongoid 3.1.2 и MongoDB 2.2.0. – 2013-04-01 12:56:11