mongoengine文档转换为python字典

目录

mongoengine 使用 Document 类表示 mongodb 中的文档,即一条记录。 如果想向外部系统发送该记录,例如向 web 服务器发送记录数据,就需要将 Document 对象持久化。 Python 的字典是一种很容易持久化的类型,可以使用 json 序列化。 因此需要将 Document 对象转为字典对象。

mongoengine 没有提供从 Document 直接转成 dict 的方法,但 mongoengine 底层由 pymongo 实现,所以 Document 对象可以使用 to_mongo 方法转成 pymongo 支持的对象 bson.son.SON。 而 SON 对象使用 to_dict 方法可以得到 dict 对象。

示例

定义一个 Document

from mongoengine import Document, StringField
class User(Document):
    email = StringField(required=True)
    first_name = StringField(max_length=50)
    last_name = StringField(max_length=50)

创建对象

user = User(
    email="w@w.com",
    first_name="Bob",
    last_name="Doors")

将对象保存到数据库中

from mongoengine import connect
connect('tumblelog')
user.save()

使用 to_mongo 可以得到 SON 对象

user_son = user.to_mongo()

使用 to_dict 可以得到 dict 对象

user_dict = user_son.to_dict()