我有一个搜索字符串,这将是我的价值,然后我想测试我的集合中的每个键,如果它具有该值。有没有办法使这项工作?
entry = db['names'].find({:firstname => "#{search}"}).to_a
puts entry
让我们说如果这有效,我会很高兴:
entry = db['names'].find({[:firstname, :lastname] => "#{search}"}).to_a
puts entry
答案 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
这样做了!