MongoDB按两列排序

时间:2013-07-17 16:07:43

标签: mongodb tornado pymongo

有人知道我如何按两个值对表格进行排序?

例如:

我的统计信息集合包含“_id”,“title”,“link”,“stats”,“range”列。 “stats”列可以包含值['duration','pace','distance'], “范围”栏可能包括0-10公里的线索,20-20分钟,因此取决于统计值。

我想通过统计数据订购,之后按范围订购。

This link

在上面的链接中,我按统计数据排序,现在我想按统计数据的每个值按范围排序!

我目前的代码:

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

2 个答案:

答案 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})

答案 1 :(得分:0)

你需要使用有序的东西,在这种情况下是数组的元组,比如:

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

当然,因为python dicts没有订购。我相信这应该有用。