How do I compare dates from Twitter data stored in MongoDB via PyMongo?

前端 未结 2 1886
旧时难觅i
旧时难觅i 2021-02-06 06:06

Are the dates stored in the \'created_at\' fields marshaled to Python datetime objects via PyMongo, or do I have to manually replace the text strings with Python Date objects? i

相关标签:
2条回答
  • 2021-02-06 06:51

    1) Test it out and see :-)

    2) If you are using pymongo, and you set a field to be equal to a python datetime object, then it will store it in the proper bson format and return datetime objects back to you when you query it. The point of pymongo really is to be working in native python objects. You don't really set dates in the BSON format with $date. It does that under the hood. That being said, I'm not sure how pymongo would know to marshal a string date for you, without the ability to say its a date.

    3) If you values are already in mongodb as raw strings, then you would need to convert them yourself on the client side using string formatting: http://docs.python.org/library/datetime.html#strftime-strptime-behavior

    Edit: If you want to run a function on mongodb that converts your string dates to date objects:

    How do I convert a property in MongoDB from text to date type?

    0 讨论(0)
  • 2021-02-06 07:10

    you can parse Twitter's created_at timestamps to Python datetimes like so:

    import datetime, pymongo
    created_at = 'Mon Jun 8 10:51:32 +0000 2009' # Get this string from the Twitter API
    dt = datetime.strptime(created_at, '%a %b %d %H:%M:%S +0000 %Y')
    

    and insert them into your Mongo collection like this:

    connection = pymongo.Connection('mymongohostname.com')
    connection.my_database.my_collection.insert({
        'created_at': dt,
        # ... other info about the tweet ....
    }, safe=True)
    

    And finally, to get tweets within the last three days, newest first:

    three_days_ago = datetime.datetime.utcnow() - datetime.timedelta(days=3)
    tweets = list(connection.my_database.my_collection.find({
        'created_at': { '$gte': three_days_ago }
    }).sort([('created_at', pymongo.DESCENDING)]))
    
    0 讨论(0)
提交回复
热议问题