Raylar 3 mongoid ile kullanıyorum.Gömülü nesneleri Mongoid/raylar içinde sorgulama 3 ("Alttan", Min operatörler ve sıralama)
class Stock
include Mongoid::Document
field :name, :type => String
field :code, :type => Integer
embeds_many :prices
class Price
include Mongoid::Document
field :date, :type => DateTime
field :value, :type => Float
embedded_in :stock, :inverse_of => :prices
Kimin minimum fiyat belirli bir tarih belirli bir fiyat p daha düşük olduğu için stoklarını olsun ister ve sonra sıralamak mümkün olacaktır: Ben Fiyatlarının gömülü koleksiyonu ile Stoklar bir koleksiyona sahip her bir hisse senedi için fiyatlar.
Ancak Mongodb'un buna izin vermediği anlaşılıyor. bu işe yaramaz çünkü:
@stocks = Stock.Where(:prices.value.lt => p)
Ayrıca, mongoDB sıralama nesneleri gömülü olamaz gibi görünüyor.
Bu görevi yerine getirmek için bir alternatif var mı? i kolayca aşağıdaki sorguyu çalıştırabilir böylece
Belki bir koleksiyonunda her şeyi koymak gerekir:
@stocks = Stock.Where(:prices.lt => p)
Ama gerçekten bir dizi benim sorgusunun ardından stok adlarına göre gruplanmış sonuçları (farklı stokları almak istiyorum örneğin sipariş edilen fiyatlar). Harita işlevini duydum/grup işlevini azalttım ancak Mongoid ile doğru şekilde nasıl kullanacağımı bilmiyorum. Yardımlarınız için
SELECT name, code, min(price) from Stock WHERE price<p GROUP BY name, code
Teşekkür:
http://www.mongodb.org/display/DOCS/Aggregation
SQL eşdeğer böyle bir şey olurdu.
scope :greater_than, lambda {|value| { :where => {:value.gt => value} } }
Bu, herhangi içinde geçmesine izin edecektir:
Daha karmaşık sorgular hala yapılabilir, bunun gibi: 'all_of ({: 'books.name' => 'name'}, {: 'books.author' =>/joe/i})' –