MongoDB stores dates in UTC timezone by default. This makes it possible to do timezone conversion to be done in both client side side or server side.

dependancies

$ pip install pytz pymongo

code

from pymongo import MongoClient
from datetime import datetime
from bson.codec_options import CodecOptions
import pytz

client = MongoClient('mongodb://localhost:27017/')
db = client['test_db']
timezone = pytz.timezone('Asia/Calcutta')

## insert a document with createdat
insert_doc = db.playground.insert_one({"createdat": datetime.utcnow()})


playground_collection = db.playground.with_options(codec_options=CodecOptions(tz_aware=True, tzinfo=timezone))
document = playground_collection.find_one()

# Timezone aware datetime
print(document)
# prints 'createdat': datetime.datetime(2018, 1, 6, 9, 49, 50, 35000, tzinfo=<DstTzInfo 'Asia/Calcutta' IST+5:30:00 STD>)