2013-03-15 75 views
1
class Job 
    field :occupation, :type => String 
    field :experience, :type => String 
end 

在我的API文件:優化查詢的MongoDB/mongoid

get :searches do 
    Cv.search({query: "*#{params[:q]}*"}).map{ |cv| {id: cv.id, text: cv.occupation } } 
end 

這產生一個JSON文件:

[{"id":"513dbb61a61654a845000005","text":"industrial engineer"},{"id":"513a11d4a6165411b2000008","text":"javascript engineer"}] 

我使用的MongoDB數據庫和mongoid作爲ORM/ODM。

此工作的罰款有10分或100或1000的結果,但我的問題是,如果有可能優化對大型數據集* 1.000.000或結果的2.000.000的API查詢。 *

+0

或許這可能幫助:http://docs.mongodb.org/manual/applications/optimization/ – fmendez 2013-03-15 17:37:06

+0

謝謝你,你可以粘貼與mongoid一個例子嗎?謝謝! – hyperrjas 2013-03-15 18:02:31

回答

0

根據您的查詢,如果你想在occupation查詢您需要在occupation

class Job 
    include Mongoid::Document 
    field :occupation, :type => String 
    field :experience, :type => String 
    index({ occupation: 1 }) 
end 

Mongoid自動創建索引上創建和_id指數,所以如果你總是包含在查詢它將保持快速,除非你的數據庫索引開始超過可用的內存。

Job.where(:occupation => "javascript engineer")將使用索引