2010-10-20 4 views
0

J'ai un indice comme celui-ci dans ma base de données (pour mes entrées de table): {"created_at": -1, "search_id": 1, "services":1}Comment contrôler avec précision vos requêtes avec MongoMapper

je peux utiliser cet index si j'effectuer une recherche dans la console Mongo comme celui-ci :

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

(si je joue un expliquer() sur cette requête, je peux voir que il utilise l'indice).

Cependant, je ne peux pas répliquer ce comportement avec MongoMapper. Je l'ai essayé avec une recherche comme celui-ci:

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

J'ai modifié l'ordre et tout essayé, mais quand je joue un expliquer à ce que je reçois qu'il utilise un BasicCursor (qui est, pas d'index) et si je fais un "critère" sur cette requête, je peux voir qu'il n'essaie même pas d'ordonner les résultats dans la recherche: je suppose qu'ils sont commandés après la fin des résultats.

Existe-t-il un moyen de contrôler vos requêtes plus précisément afin que vous puissiez utiliser un index dans des cas comme ceux-ci?

Répondre

0

Mes méchants, j'utilisais la fonction order à tort que cette fois-ci attend un symbole plutôt qu'un tableau:

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