使用where子句和多个$或来查询mongodb

时间:2014-02-21 03:58:19

标签: ruby-on-rails mongodb

我正在构建一个rails(3.2)app,我按照here描述的程序使用了文本搜索。我正在使用mongodb。根据我在控制器中提供的链接,我写道:

@products = Product.search(params[:search])

同样在模型

def self.search(search)
    if search
      where(organization_name: /#{search}/ ) 
    else
      scoped
    end
  end

我的问题是:我有三个字段organization_nametitledescription,我必须搜索文本。在上面的代码中,我只搜索organization_name字段中的文本。我需要查询:

  1. 搜索文字是指organization_name field description字段 title字段

  2. Railcast 描述的搜索区分大小写。如何使其不区分大小写搜索?

1 个答案:

答案 0 :(得分:1)

在mongo控制台中,您的查询将如下所示(search必须是您的搜索字符串):

db.products.find(
    {
        $or: [
            { organization: { $regex: search, $options: 'i' } },
            { descrption: { $regex: search, $options: 'i' } },
            { title: { $regex: search, $options: 'i' } }
        ]
    }
)