将 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"}'