如何使用Mongoid执行runCommand?

时间:2013-04-08 10:10:01

标签: ruby-on-rails mongodb text mongoid

我在MongoDB中有文本索引,并希望使用text命令在我的集合中进行搜索。在Mongoid中找不到此功能。

2 个答案:

答案 0 :(得分:2)

我试图找到解决方案,因为我也是一个mongoid用户。除了查询之外,我还没有在mongoid中找到任何与搜索文本相关的具体内容。经过一番调查后,我发现mongoid_search宝石可能对搜索文本有用。

它有一个限制,写在自述文件的第一行是“如果你的可搜索模型很大(即1.000.000+记录),solr或sphinx可能更适合你。”如果您有,则需要配置solr或elasticsearch以获得更好的性能。如果你打算在heroku上进行部署,那么请在这方面进行开发。

这可能会帮助您实现目标。

答案 1 :(得分:1)

最近遇到了类似的情况。您可以通过以下方式在Mongoid中运行搜索命令:

session = Mongoid.session('default')
session.command({"text" => 'my_collection', 'search' => 'whatever'})

做一个漂亮的混音:

# mixins/search.rb
module Mixins
  module Search

    extend ActiveSupport::Concern

    module ClassMethods

      def search(query)
        session = Mongoid.session('default')
        session.command({"text" => collection.name, 'search' => query})
      end

    end

  end
end

这样您只需include Mixins::Search进入模型并使用Model.search 'whatever'搜索内容。