Ruby on rails 如何合并mongodb查询结果?

Ruby on rails 如何合并mongodb查询结果?,ruby-on-rails,ruby,mongodb,Ruby On Rails,Ruby,Mongodb,所以我有一个AR模型,看起来像这样(所有字符串和日期属性): AR 司机证 司机姓名 驾驶执照 于(日期)支付 ... 助手id 助手姓名 助手许可证 已付款的助理(日期) 我有这个查询要显示 def self.unpaid result1 = AR.where(:paid_on => nil).in(:status => [AR::TRANSACTION_COMPLETE,AR::CANCELLED_BY_REQUESTER]).gt(:total_owed

所以我有一个AR模型,看起来像这样(所有字符串和日期属性):

AR 司机证 司机姓名 驾驶执照 于(日期)支付 ... 助手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
问题是,当我以这种方式合并这两个元素时,我最终得到了这样一个数组

    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)
我需要的是一个这样结束的数组

    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)

我猜这是一个排序,与第二或第三where子句结合在一起?

可以使用单个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

尝试此操作后,当在my erb中显示时,它仅显示此参数下的项目(:paid_on_helper=>nil,:assigned_driver2_id.ne=>nil)尝试调用
。解释您的查询。这将显示实际的mongo查询,并可能帮助您进行调试。我已经这样做了,现在我的应用程序正在崩溃。它将重新启动,然后持续崩溃。wtf?仅在Rails控制台中使用
.explain
,而不是应用程序代码。例如:
bundle exec rails控制台