2012-04-20 40 views
74

随着PyMongo,使用的.sort当我尝试检索通过 '数字' 和这样的 '日期' 字段进行排序对象:与PyMongo

db.test.find({"number": {"$gt": 1}}).sort({"number": 1, "date": -1}) 

我得到这个错误:

TypeError: if no direction is specified, key_or_list must be an instance of list 

我的排序查询有什么问题?

回答

137

sort应该是关键的方向对的列表,这是

db.test.find({"number": {"$gt": 1}}).sort([("number", 1), ("date", -1)]) 

之所以这样,必须有一个列表是多个参数的问题和dict S的排序不是用Python订购。

+14

这是Python中的一个列表的原因是,在sort()中重要的事项和字典的排序不是在Python中排序的。 – 2012-11-16 12:11:34

+0

@AndréLaszlo可以使用OrderedDict()吗? – zakdances 2013-03-12 23:16:11

+0

@yourfriendzak,恐怕不是。我想,这有点不错。 [这是原因](http://api.mongodb.org/python/1.0/pymongo-pysrc.html#L70),位于第70行。OrderedDict不是types.ListType的实例。 – 2013-03-14 12:02:30