通过一个字符串Ruby MongoDB搜索集合中的多个键

时间:2014-01-27 18:02:59

标签: ruby mongodb collections find key

我有一个搜索字符串,这将是我的价值,然后我想测试我的集合中的每个键,如果它具有该值。有没有办法使这项工作?

entry = db['names'].find({:firstname => "#{search}"}).to_a  
puts entry

让我们说如果这有效,我会很高兴:

entry = db['names'].find({[:firstname, :lastname] => "#{search}"}).to_a 
puts entry

3 个答案:

答案 0 :(得分:1)

如果您想要匹配名字或姓氏,那么您需要:$or运算符:

db['names'].find(
  :$or => [
    :firstname => search,
    :lastname  => search
  ]
)

如果您想要匹配名字和姓氏,那么:

db['names'].find(
  :firstname => search,
  :lastname  => search
)

除非您想将"#{search}"转换为空字符串,否则无需说nil,在这种情况下,您最好使用search.to_s来更明确地了解您的{{1}}意图。

答案 1 :(得分:0)

如评论部分所述,为了使用或运算符进行搜索,您可以使用

db['names'].find(
  {'$or' => [
             {'key_1' => elem},
             {'key_2' => elem}
            ]
  }
)

答案 2 :(得分:-1)

  

:whatever => /#{Regexp.escape(search)}/i

这样做了!