如何使用MongoMapper精确控制查询

时间:2010-10-20 17:46:57

标签: mongodb mongomapper

我的数据库中有这样的索引(对于我的表条目):{"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(即没有索引),如果我对该查询执行“条件”,我可以看到它甚至没有尝试在搜索中对结果进行排序:我猜他们会在结果返回后再订购。

有没有办法更精确地控制您的查询,以便您可以在这些情况下使用索引?

1 个答案:

答案 0 :(得分:0)

我的坏人,我正在使用order函数错误,因为这次它需要一个符号而不是一个数组:

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