【发布时间】:2015-12-06 16:18:22
【问题描述】:
我想模拟一个“&”运算符来搜索我的 mongo db 中的元素。
有4个可搜索字段nameidtagsnegative_tags
如果匹配为真,则其中任何一个都可以匹配。
例如,如果我搜索 a&b,“a”可以在 4 个字段中的任何一个中匹配,“b”也可以匹配。但是,它们都需要匹配
我尝试了以下操作
Model.or({:name.all => regexps}, {:id.all =>regexps}, {:tags.all => regexps}, {:negative_tags.all => regexps})
regexps 是一个正则表达式数组。对于给出的示例,它将是
[ /a/i, /b/i ]
但是,这并不像我想要的那样,因为您需要所有匹配都发生在同一个属性上。
我的另一个尝试是为每个正则表达式运行单独的 mongo 查询并获取集合的交集。
Model.or({:name.in => one_regexp}, {:id.in => one_regexp}, {:tags.in => one_regexp}, {:negative_tags.in => one_regexp})
我的问题是我不确定如何合并这两个哈希。 Mongoid 懒惰地评估查询并返回一个 Mongoid::Criteria 对象。
我想知道怎么做交叉口
【问题讨论】:
-
你的意思是“||”不是“&” ...
标签: ruby-on-rails ruby mongodb mongoid nosql