zoukankan      html  css  js  c++  java
  • 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  # 设置非严格校验字段则不需要吧所有字段都声明
               }
    
  • 相关阅读:
    Ubuntu 18.04 设置静态IP
    面试问题总结
    hadoop集群搭建流程
    胡适:天下没有白费的努力
    学习的技术内容
    Windows MySql安装
    MySql 基础知识
    windows maven 安装与配置
    Logstash抽取数据到Elasticsearch(1)
    后台运行导入数据库
  • 原文地址:https://www.cnblogs.com/wjlv/p/15047715.html
Copyright © 2011-2022 走看看