2015-06-04 20 views
5

voglio ottenere i messaggi più recenti prima, e provare quanto segue:pymongo sono ordinati per data

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

(senza sorta, ottengo più antichi messaggi prima multa)

sto ottenendo questo errore

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

Cosa sta succedendo qui? Non è possibile ordinare per data?

risposta

12

Questo non è il formato corretto dei parametri per la funzione sort. La sintassi corretta sarebbe simile a questa:

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

Ecco un link alla relativa documentazione per la funzione sort: http://api.mongodb.org/python/current/api/pymongo/cursor.html#pymongo.cursor.Cursor.sort

Per ordinare da molteplici parametri che è possibile utilizzare la seguente sintassi:

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

In PyMongo si può provare anche questo se c'è un errore per .Sort ('data', pymongo.DESCENDING)

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