將 json 模組與自定義處理程式一起使用
如果你只需要將 mongo 結果序列化為 json,則可以使用 json
模組,前提是你定義了自定義處理程式來處理非可序列化欄位型別。一個優點是你可以全面瞭解特定欄位的編碼方式,例如日期時間表示。
這是一個處理程式,它使用 iso 表示法編碼日期,id 作為十六進位制字串:
import pymongo
import json
import datetime
import bson.objectid
def my_handler(x):
if isinstance(x, datetime.datetime):
return x.isoformat()
elif isinstance(x, bson.objectid.ObjectId):
return str(x)
else:
raise TypeError(x)
db = pymongo.MongoClient().samples
record = db.movies.find_one()
# {u'_id': ObjectId('5692a15524de1e0ce2dfcfa3'), u'title': u'Toy Story 4',
# u'released': datetime.datetime(2010, 6, 18, 4, 0),}
json_record = json.dumps(record, default=my_handler)
# '{"_id": "5692a15524de1e0ce2dfcfa3", "title": "Toy Story 4",
# "released": "2010-06-18T04:00:00"}'