Как точно контролировать ваши запросы с MongoMapper - PullRequest
0 голосов
/ 20 октября 2010

В моей базе данных есть такой индекс (для записей в таблице): {"created_at": -1, "search_id": 1, "services":1}

Я могу использовать этот индекс, если я выполню поиск в консоли Mongo следующим образом:

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

(если я выполню объяснение () для этого запроса, я вижу, что он использует индекс).

Однако я не могу повторить это поведение с MongoMapper. Я пробовал с таким поиском:

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

Я изменил порядок и попробовал все, но когда я выполняю объяснение, я получаю, что он использует BasicCursor (то есть, нет индекса), и если я выполняю «критерии» для этого запроса, я вижу он даже не пытается упорядочить результаты в поиске: я думаю, они упорядочены после того, как результаты вернутся.

Есть ли способ более точно контролировать ваши запросы, чтобы вы могли использовать индекс в таких случаях?

1 Ответ

0 голосов
/ 25 октября 2010

Мои плохие парни, я неправильно использовал функцию order, так как на этот раз она ожидает символ, а не массив:

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