2011-10-20 5 views
0

Si j'ai une grande collection (40m + objets) et je suis à la recherche de trouver:indices composés Mongo et genre direction

(a : 1 OR b : 2) && c : 3 
sorted by d : 1 

Je comprends que je créerais un indice:

{ "a":1, "b":1, "c":1, "d":1 } 

Mais si je voulais que l'ordre de tri soit inversé, aurais-je besoin d'un index supplémentaire:

{ "a":1, "b":1, "c":1, "d":-1 } 

Merci beaucoup.

Répondre

2

Si vous souhaitez que le résultat soit trié par ordre croissant ou décroissant, les index composés peuvent échouer. Rappelez-vous que les index composés trient les tuples dans l'ordre lexicographique. Il n'y a aucune raison de croire que les tuples sont toujours en ordre croissant sur la dernière touche (d).

Vous pouvez simplement effectuer les opérations suivantes:

db.foo.find(...).sort({d:1}); 

db.foo.find(...).sort({d:-1}); 

tri, même sur les grands ensembles de tuples est assez rapide.

+0

Mongo ne peut utiliser qu'un index par requête. Je pourrais mal interpréter la question, mais je ne suis pas sûr si la création de plusieurs index pour couvrir cette requête est le bon choix. – Marc

+0

Oui, MongoDB est assez limité en termes d'index. –