Ordenando documentos embutidos no mongodb
Fala galera! Precisei recentemente fazer um ordenação de um documento embutido no mongodb utilizando a gem mongoid.Â
Imagine a estrutura a seguir:
class User include Mongoid::Document field :name, :type => String, :index => true embeds_many :lists end
class List include Mongoid::Document field :name, :type => String, :index => true embedded_in :user embeds_many :items end
class Item include Mongoid::Document field :name, :type => String, :index => true field :price, :type => Float embedded_in :list end
Agora a pergunta que não quer calar! Como consigo ordernar todos os itens de todas as listas de um usuário por um determinado atributo do item, por exemplo price?
class User include Mongoid::Document field :name, :type => String, :index => true embeds_many :lists def items(sort="price", ord="asc") self.lists.map(&:items).flatten.sort do |x,y| if ord == "desc" y[sort] <=> x[sort] else x[sort] <=> y[sort] end end end end
É isso ai! Espero que tenha ajudado! Abraços