来自 = [:TPE, :TOKYO, :CHICHAGO]
where(
from: /.*#{from}.*/i,
)
输入文件
{
from: 'PARIS'
},
{
from: 'PARIS'
},
{
from: 'TOKYO'
},
{
from: 'TPE'
}
输出文件
{
from: 'TOKYO'
},
{
from: 'TPE'
}
来自 = [:TPE, :TOKYO, :CHICHAGO]
where(
from: /.*#{from}.*/i,
)
{
from: 'PARIS'
},
{
from: 'PARIS'
},
{
from: 'TOKYO'
},
{
from: 'TPE'
}
{
from: 'TOKYO'
},
{
from: 'TPE'
}
您可以使用$in
运算符来查看字段是否与数组中的任何内容匹配:
where(:from => { :$in => array })
Mongoid 将 MongoDB 运算符修补Symbol
为方法,因此您也可以说:
where(:from.in => array)
如果您真的在寻找包含数组中任何值的值,那么您可以只构建一个使用交替的正则表达式:
re = /#{array.map { |s| Regexp.escape(s.to_s) }.join('|')}/i
Model.where(:from => re)
请注意,.*
正则表达式中没有前导或尾随,因为这没有任何用处。Regexp.escape
还要注意在使用正则表达式交替运算符 ( ) 加入组件之前存在调用|
。