我的数据库中有这样的索引(对于我的表条目):{"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(即没有索引),如果我对该查询执行“条件”,我可以看到它甚至没有尝试在搜索中对结果进行排序:我猜他们会在结果返回后再订购。
有没有办法更精确地控制您的查询,以便您可以在这些情况下使用索引?
答案 0 :(得分:0)
我的坏人,我正在使用order
函数错误,因为这次它需要一个符号而不是一个数组:
Entry.where(:search_id => 1, :services => 2).order(:created_at.desc)