【问题标题】:Rails & Mongoid - Merging multiple criteriaRails & Mongoid - 合并多个标准
【发布时间】:2015-11-03 19:38:38
【问题描述】:

我花了一点时间才弄清楚这一点,我相信其他人也很好奇如何做到这一点..

我有一个案例,我需要使用我转换为数组的用户输入来运行.and() 查询。我的问题是查询正在搜索从输入中读取的两个单词的每个字段。

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid mongodb-query


    【解决方案1】:

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

    我通过检查查询是否返回任何Book 文档来决定要合并哪些查询:tag_query.exists ? conditions.merge!(tag_query.selector) : nil。如果查询返回一个 Book 文档,则它被合并到散列中,如果不是,则什么也不会发生。

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

    不是因为在每个字段中都没有找到这两个词而返回 0,而是智能地将确实找到某些内容的字段汇集在一起​​,并使其仅计算在整个中找到两个词的位置 文件。

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多