2017-04-26 5 views
0

だから私はこの(すべての文字列と日付の属性)のように見えるARモデルを持っている:mongodbのクエリ結果をマージするには?

AR は DRIVER_NAME driver_license paid_on(日) ... helper_id HELPER_NAME helper_license paid_on_helper(日付をdriver_id )

私は無給表示するには、このクエリを持っている

def self.unpaid 
     result1 = AR.where(:paid_on => nil).in(:status => [AR::TRANSACTION_COMPLETE,AR::CANCELLED_BY_REQUESTER]).gt(:total_owed_to_driver => 0).asc(:assigned_driver_id).asc(:timestamp_requested) 
     result2 = AR.where(:paid_on_helper => nil, :assigned_driver2_id.ne => nil).in(:status => [AR::TRANSACTION_COMPLETE,AR::CANCELLED_BY_REQUESTER]).gt(:total_owed_to_driver => 0).asc(:assigned_driver2_id).asc(:timestamp_requested) 
     result1.to_a.concat(result2.to_a) 
     result1 
     end 

問題は、このように2つをマージすると、このような配列になります。

Joe (main driver) 
    Joe (main driver) 
    Joe (main driver) 
    Bob (main driver) 
    Bob (main driver) 
    Larry (main driver) 
    Larry (main driver) 
    Larry (main driver) 
    Joe (2nd driver) 
    Joe (2nd driver) 
    Bob (2nd driver) 
    Bob (2nd driver) 
    Bob (2nd driver) 
    Bob (2nd driver) 
    Larry (2nd driver) 
    Larry (2nd driver) 

私が必要とするのは、このように終わる配列です。

Joe (main driver) 
    Joe (main driver) 
    Joe (main driver) 
    Joe (2nd driver) 
    Joe (2nd driver) 
    Bob (main driver) 
    Bob (main driver) 
    Bob (2nd driver) 
    Bob (2nd driver) 
    Bob (2nd driver) 
    Bob (2nd driver) 
    Larry (main driver) 
    Larry (main driver) 
    Larry (main driver) 
    Larry (2nd driver) 
    Larry (2nd driver) 

2次または3次where句と組み合わせた並べ替えを推測していますか?

答えて

1

これは単一のmongoクエリを使用して達成できますか?このような何か:

def self.unpaid 
    AR.or({ :paid_on => nil }, { :paid_on_helper => nil, :assigned_driver2_id.ne => nil }) 
    .in(:status => [AR::TRANSACTION_COMPLETE,AR::CANCELLED_BY_REQUESTER]) 
    .gt(:total_owed_to_driver => 0) 
    .asc(:assigned_driver_id) 
    .asc(:timestamp_requested) 
end 
+0

これを試してみましたが、私のERBで表示するとき、それはこれだけのparamに該当項目を示し(:paid_on_helper => nilを、:assigned_driver2_id.ne => nilを) – jdog

+1

'を呼び出す試してみてください。あなたの質問に「説明する」。これは実際のmongoクエリを表示し、デバッグに役立つはずです。 – mikwat

+0

私はやったし、今私のアプリがクラッシュしている。それは再起動し、続いて継続的にクラッシュします。 wtf? – jdog

関連する問題