将 rails 查询转换为 mongoid 查询

Convert rails query to mongoid query

我有一个现有的 rails 查询,但它不适用于 mongoid 。我需要转换以便它与 mongoid 一起使用

这里是查询

scope :between, -> (sender_id,recipient_id) do
    where("(conversations.sender_id = ? AND conversations.recipient_id =?) OR (conversations.sender_id = ? AND conversations.recipient_id =?)", sender_id,recipient_id, recipient_id, sender_id)
 end

我是 mongoid 的新手,我试过但找不到合适的解决方案

Mongoid 3.4.2
Rails 5.0.1
ruby '2.3.0'

假设声明在对话模型中:

scope :between, -> (sender_id,recipient_id) do
    any_of({sender_id: sender_id, recipient_id: recipient_id}, {sender_id: recipient_id, recipient_id: sender_id})
end

更新:

另一种使用 in 运算符的解决方案也将涵盖您的查询,但会包括 sender_id: sender_id, recipient_id: recipient_id.

不需要的情况
scope :between, -> (sender_id, recipient_id) do
    args = [sender_id, recipient_id]
    where(:sender_id.in => args , :recipient_id.in => args)
end

我更喜欢第一个选项,但如果您确定每个模型的配对值都是唯一的,第二个选项也可以达到目的。