背景
最近需要从 MongoDB 中查询数据用于数据分析, 一开始就用了 pymongo 后来发现使用起来很不方便, 后面了解到有类似 SQLAlchemy 的 ORM 模块 mongoengine 能够操 mongo
简单看了文档, 就操练起来了, 但是在模型的声明时以为会和 SQLcalchemy 一样不需要每个字段都严格匹配, 结果查询出现了错误:
mongoengine.errors.FieldDoesNotExist: The fields "{'fileSize','guilds','paused','subcontractType'}" do not exist on the document "TaskBatch"
解决
网上查找资料才知道增加参数 strict=False 即可解决:
- class TaskBatch(Document):
- """
- 任务批次表
- """
- _id = StringField(primary_key=True, required=True)
- taskId = StringField(max_length=100)
- taskName = StringField(max_length=50)
- name = StringField(max_length=255)
- createdDate = DateTimeField(default=datetime.now)
- createdBy = StringField(max_length=255)
- meta = {'db_alias': 'aie_prod', # 根据别名自动使用对应客户端
- 'collection': 'TaskBatch', # 设置默认集合即可直接连接到对应集合
- 'strict': False # 设置非严格校验字段则不需要吧所有字段都声明
- }
来源: http://www.bubuko.com/infodetail-3801064.html