データベースに次のようなインデックスがあります(テーブルエントリ用):{"created_at": -1, "search_id": 1, "services":1}
次のように Mongo コンソールで検索を実行すると、そのインデックスを利用できます。
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 (つまり、インデックスなし) を使用していることがわかり、そのクエリで「基準」を実行すると、そうではないことがわかります検索で結果を並べ替えようとしています:結果が戻ってきたら、後で並べ替えられると思います。
このような場合にインデックスを利用できるように、クエリをより正確に制御する方法はありますか?