Search code examples
pythonmongodbpymongo

pymongo sorting by date


I want to get newest posts first, and try the following:

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

(without sort, I get the oldest posts first fine)

I am getting this error

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

What is going on here? Is not it possible to sort by date?


Solution

  • This is not the correct format of parameters for the sort function. The correct syntax would look something like this:

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

    Here is a link to the relevant documentation for the sort function: http://api.mongodb.org/python/current/api/pymongo/cursor.html#pymongo.cursor.Cursor.sort

    To sort by multiple parameters you can use the following syntax:

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