2015-06-04 6 views
5

Chcę uzyskać najnowsze posty pierwszy i spróbuj wykonać następujące czynności:pymongo sortując datami

db.posts.find({"date": {"$lt": tomorrow, "$gte": 
       today}}).sort({'date':pymongo.DESCENDING}) 

(bez rodzaj, dostaję najstarszego posty pierwszy Fine)

ja dostaję ten błąd

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

Co się tutaj dzieje? Czy nie można sortować według daty?

Odpowiedz

12

To nie jest poprawny format parametrów dla funkcji sort. Poprawna składnia będzie wyglądać mniej więcej tak:

db.posts.find(...).sort('date',pymongo.DESCENDING) 

Tu jest link do odpowiedniej dokumentacji dla funkcji sort: http://api.mongodb.org/python/current/api/pymongo/cursor.html#pymongo.cursor.Cursor.sort

Aby posortować według wielu parametrów można użyć następującej składni:

db.posts.find(...).sort([ 
    ('date', pymongo.ASCENDING), 
    ('other_field', pymongo.DESCENDING) 
]): 
3

W witrynie PyMongo można również wypróbować tę opcję, jeśli wystąpił błąd dotyczący .sort ("date", pymongo.DESCENDING)

db.posts.find().sort('date', -1)