Fala galera! Precisei recentemente fazer um ordenação de um documento embutido no mongodb utilizando a gem mongoid.
Imagine a estrutura a seguir:
user.rb
class User
include Mongoid::Document
field :name, :type => String, :index => true
embeds_many :lists
end
list.rb
class List
include Mongoid::Document
field :name, :type => String, :index => true
embedded_in :user
embeds_many :items
end
item.rb
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?
Éis a solução!
user.rb
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
-
certificationex liked this
-
determinesek6 liked this
-
dictionaryde2 liked this
-
promontoryop3 liked this
-
resorts69 liked this
-
differences56f liked this
-
coalitiong9p liked this
-
diegoalvareznogueira posted this