【问题标题】:query in mongoid search in multiple condition在多个条件下查询 mongoid 搜索
【发布时间】:2013-04-05 11:30:53
【问题描述】:

我的模型是这样的

def self.search(search)
    if search
    self.full_text_search(search)
    else
    scoped
    end
   end 

但我也需要添加这个

 self.or({start_date: /#{Regexp.escape(search)}/i},{end_date: /#{Regexp.escape(search)}/i})

在 上面搜索。我怎么能在上面的搜索中加入这两个条件。这两个查询独立工作正常。但我需要让他们联合起来。任何有关工作示例的帮助都会有所帮助

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 mongodb mongoid


    【解决方案1】:

    你可以使用merge方法加入两个mongoid条件:

    q1 = self.scope
    q2 = self.or(...)
    
    result = q1.merge(q2)
    

    以下是相关文档:

    http://rdoc.info/github/mongoid/mongoid/master/Mongoid/Criteria#merge-instance_method

    【讨论】:

    【解决方案2】:
    def self.search(search)
        if search
        q1 = self.full_text_search(search)
        q2 = self.or({start_date: /#{Regexp.escape(search)}/i},{end_date: /#{Regexp.escape(search)}/i})
        result = q1.merge(q2)
        return result
        else
        scoped
        end
       end 
    

    这就是我所做的,它已经解决了。谢谢@cpuguy83

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 2014-01-17
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多