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()