执行一个Mongoid查询而不是两个单独的Mongoid查询

时间:2014-11-06 15:39:32

标签: ruby-on-rails mongodb mongoid

我试图用一个mongoid查询执行以下两个mongoid查询。我尝试在Mongoid文档中寻找解决方案但找不到任何解决方案。

查询1

Event.where(:start_time.gte => current_date.to_s, :start_time.lte => date_after_2_weeks.to_s)

查询2

Event.where(:stop_time.gte => current_date.to_s, :stop_time.lte => date_after_2_weeks.to_s)

有没有办法只用一个执行上面两个单独的查询?请帮忙。我非常感激。

谢谢, -Parash -

1 个答案:

答案 0 :(得分:1)

总是有#34; raw"只需从底层驱动程序中提取,就可以实现Mongo语法。

A" union"基本上意味着$or

Event.collection.find({
    "$or" => [
        { "start_time" => { 
            "$gte" => current_date.to_s, 
            "$lte" => date_after_2_weeks.to_s
        },
        { "stop_time" => 
            "$gte" => current_date.to_s,
            "$lte" => date_after_2_weeks.to_s
        }
    ]
})

和#34;交叉口"基本上意味着$and

Event.collection.find({
    "start_time" => { 
        "$gte" => current_date.to_s, 
        "$lte" => date_after_2_weeks.to_s
    },
    "stop_time" => {
        "$gte" => current_date.to_s,
        "$lte" => date_after_2_weeks.to_s
    }
})

您可能会收集哪些内容。所以不需要特定的操作数。毕竟,字段名称是不同的。

也许有一个" railsy"这样做的方法,但具体的语法总是有效。