2015-11-03 61 views
0

我花了一些时间来弄清楚这一点,我确信其他人也很好奇如何做到这一点。

我有一种情况,我需要运行.and()使用我转换为数组的用户输入进行查询。我的问题是,查询是在每个字段中搜索从输入中读入的两个字。

Rails&Mongoid - 合并多个条件

回答

0

所以我所做的就是根据字段分解查询。即如果你有场:tags, :story, :author你将有3个查询,tag_query = Book.any_in(:tags => @user_search)
我创建了一个空哈希conditions = {}
然后我会每个查询合并到conditions哈希使用conditions.merge!(tag_query.selector)

我决定哪些查询通过检查查询是否返回合并任何Book文件:tag_query.exists ? conditions.merge!(tag_query.selector) : nil。如果查询返回一个Book文档,它将被合并到哈希中,如果没有,则不会有任何反应。

最后一步是运行我们关心的实际查询.. @book = Book.where(conditions)。这样做是将所有查询结果组合在一起,并将它们砸碎在一起,就像查询.and()一样!

而不是返回0,因为在各个领域都没有发现这两个词,这种智能汇集了实际上没有找到的领域,使得它,所以它只有在这两个词已在整个文件中发现了重要的。