2012-04-20 28 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