2013-07-17 4 views
1

Кто-нибудь знает, как я могу сортировать таблицы по двум значениям?MongoDB Order by two columns

Например:

У меня есть STATs коллекции, имеет столбцы "_id", "название", "связь", "Статистика", "Диапазон". столбец «stats» может состоять из значений ['duration', 'темп', 'distance'], Столбец «range» может состоять из таких, как 0-10 км, 20-20 минут и так далее, зависит от значений статистики.

Оформить заказ по машинам и после этого по диапазону.

This link

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

Мой текущий код:

guides = yield gen.Task(Guides.objects.find, query={}, limit=20, 
          sort={'stats': 1}) 
+0

Не могли бы вы добавить свой текущий запрос? –

+0

Я добавил !! –

+0

Я думаю, что ответ Джеймса ниже об этом покрывает :) –

ответ

0

Чтобы заказать документы более чем на одном поле, вам необходимо заявление соединение сортировки и в идеале составной индекс поддерживает его.

Для составных индексов в MongoDB см: http://docs.mongodb.org/manual/tutorial/create-a-compound-index/

Вашего рода будет выглядеть примерно так:

guides = yield gen.Task(Guides.objects.find, query={}, limit=20, 
         sort={'stats': 1, 'range': 1}) 
+0

Tnx man! Это верно! –

0

Вы должны использовать то, что заказывается, в этом случае кортежей массивов, например:

sort([("stats",pymongo.ASCENDING), ("range",pymongo.ASCENDING)]) 

Так как, конечно, питоны python не упорядочены. Это должно работать, я верю.