mongoengine模型字段非严格校验FieldDoesNotExist

背景

最近需要从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  # 设置非严格校验字段则不需要吧所有字段都声明
           }
posted @   唐大侠的小迷弟  阅读(404)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2019-07-23 匿名函数lambda小计
点击右上角即可分享
微信分享提示