mongoengine - 忽略模式验证的额外字段

时间:2015-04-07 15:14:02

标签: mongodb database-schema mongoengine

我正在尝试查询我的数据库。某些记录当前有额外的字段未包含在我的模型模式中(错误,但我想处理这些情况)。当我尝试查询数据库并将记录转换为模式时,我收到以下错误:

FieldDoesNotExist
The field 'X' does not exist on the document 'Y'

由于数据库中的额外字段与架构不同。

有没有办法忽略mongoengine中额外字段的模式验证?

5 个答案:

答案 0 :(得分:35)

如果在数据加载时有额外字段时忽略此错误,请在元字典中将strict设置为False

class User(Document):
    email = StringField(required=True, unique=True)
    password = StringField()
    meta = {'strict': False}

答案 1 :(得分:4)

我认为您在定义模型时希望使用DynamicDocument而不是Document,这将允许忽略db模式中的额外字段。

答案 2 :(得分:1)

我认为您希望跳过架构验证,因此在保存文档时

document_name.save(validate=False)

答案 3 :(得分:0)

您可以从mon.DynamicDocument扩展。

class AF(mon.DynamicDocument):
  meta = {
    'collection': 'af'
  }
user_id = mon.StringField(db_field='customer_user_id')

您可以从文档中看到。动态文档类允许使用灵活,可扩展且不受控制的模式。

答案 4 :(得分:0)

只需使用 DynamicDocument 定义您的类

class Y(DynamicDocument):
    pass

添加任何你想要的属性

o=Y()
o.attr1="abc"

保存它;-) 没有错误

o.save()
相关问题