0

2つの値を含むサブドキュメントを持つドキュメントをクエリしたいと思います。

私はメインドキュメントであるアカウントを持っていますが、これには販売サブドキュメントがまったく含まれていません。各セールにはsale_priceとsale_dateがあります。過去4年間にsale_priceが0より大きくsale_dateのsaleサブドキュメントを持つアカウントのみが必要です。

これが私が試したことです。

Account.and("sales.sale_date" => {"$gt" => Date.today - 4.years}, "sales.sale_price" => {"$gt" => 0})

これにより、過去4年間に「任意の」売上があり、sale_price>0の「任意の」売上があるアカウントが返されます。同じドキュメントで両方の基準が当てはまるアカウントのみが必要です。
何かアドバイス?

4

1 に答える 1

4

よくあることですが、質問をした後、さらに調査を行うと解決策が見つかります。elem_matchメソッドは、私が必要としていることを実行しているように見えます。
これが私が思いついたものです。

Account.elem_match(sales: {:sale_date.gt => Date.today - 4.years, :sale_price.gt => 0}) 
于 2013-01-02T18:56:39.013 に答える