Rails&Mongoid - 合并多个条件
问题描述:
我花了一些时间来弄清楚这一点,我确信其他人也很好奇如何做到这一点。
我有一种情况,我需要运行.and()
使用我转换为数组的用户输入进行查询。我的问题是,查询是在每个字段中搜索从输入中读入的两个字。
Rails&Mongoid - 合并多个条件
答
所以我所做的就是根据字段分解查询。即如果你有场: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
,因为在各个领域都没有发现这两个词,这种智能汇集了实际上没有找到的领域,使得它,所以它只有在这两个词已在整个文件中发现了重要的。