2010-10-20 26 views
0

控制你的查詢我有一個這樣的指標在我的數據庫(我的表項):{"created_at": -1, "search_id": 1, "services":1}如何精確地MongoMapper

我可以使用該索引的,如果我在蒙戈控制檯這樣執行搜索:

db.entries.find({'search_id':1, 'services':2}).sort({'created_at': 
-1}) 

(如果我對該查詢執行explain(),我可以看到它使用索引)。

但是我無法用MongoMapper複製該行爲。我試着像這樣的搜索:

Entry.where(:search_id => 1, :services => 2).order(['created_at', 
'descending']) 

我已經改變了順序和嘗試一切,但是當我執行上有一個解釋,我得到,它的使用BasicCursor(也就是,沒有索引)和如果我在那個查詢上做了一個「標準」,我可以看到它甚至沒有試圖在搜索中排序結果:我想他們會在結果返回後被排序。

有沒有辦法更精確地控制你的查詢,這樣你可以在這些情況下使用索引?

回答

0

我的壞人,我用的是order函數不正確,因爲這時候就需要一個象徵,而不是一個數組:

Entry.where(:search_id => 1, :services => 2).order(:created_at.desc)