首先
find_one将返回单个字典,或者如果集合中没有匹配的元素,则返回None。所以我认为这
page[0]等同于获取密钥的页面字典的价值
0
如果返回的文档包含
ObjectId,
_id则不能简单地使用,
jsonify因为
ObjectIdJSON不可序列化。你可以使用如下形式:
jsonify({ 'page': make_public_page({k:v for k, v in page.items() if k != '_id'}))或者你可以
_id通过致电简单地删除
page.pop('_id')你也可以使用
bson.json_util。它包含用于在BSON和JSON之间进行转换的工具。
from flask import Response from bson import json_util
然后,
jsonify用类似以下内容替换:
return Response( json_util.dumps({'page' : make_public_page(page)}), mimetype='application/json')编辑
如果你想用简短,肮脏的方式来解决问题,可以这样进行:
from bson import json_util, ObjectIdimport json#Lets create some dummy document to prove it will workpage = {'foo': ObjectId(), 'bar': [ObjectId(), ObjectId()]}#Dump loaded BSON to valid JSON string and reload it as dictpage_sanitized = json.loads(json_util.dumps(page))


