Монго составные индексы и направление сортировки - PullRequest
0 голосов
/ 20 октября 2011

Если у меня есть большая коллекция (40м + объекты), и я ищу, чтобы найти:

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

Я понимаю, что создал бы индекс:

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

Но если бы я захотел изменить порядок сортировки, понадобился бы дополнительный индекс:

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

Большое спасибо.

1 Ответ

2 голосов
/ 20 октября 2011

Если вы хотите, чтобы результат сортировался в порядке возрастания или убывания, составные индексы могут вас потерпеть.Помните, что составные индексы сортируют кортежи в лексикографическом порядке.Нет оснований полагать, что на последнем ключе (d) кортежи всегда располагаются в порядке возрастания.

Вы можете просто сделать следующее:

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

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

Сортировка даже на больших наборах кортежей выполняется довольно быстро.

...