mongoengine - 忽略模式验证的额外字段
mongoengine - Ignore extra fields for schema validation
我正在尝试查询我的数据库。某些记录当前有额外的字段,这些字段未包含在我的模型架构中(错误,但我想处理这些情况)。当我尝试查询数据库并将记录转换为模式时,出现以下错误:
FieldDoesNotExist
The field 'X' does not exist on the document 'Y'
由于数据库中的额外字段与架构不同。
有没有办法忽略 mongoengine 中额外字段的模式验证?
我想你想跳过模式验证,所以当你保存文档时
document_name.save(validate=False)
我相信您想在定义模型时使用 DynamicDocument 而不是 Document,这将允许忽略数据库架构中的额外字段。
要在加载数据时有额外字段时忽略此错误,请在元字典中将 strict
设置为 False
。
class User(Document):
email = StringField(required=True, unique=True)
password = StringField()
meta = {'strict': False}
您可以从 mon.DynamicDocument 扩展。
class AF(mon.DynamicDocument):
meta = {
'collection': 'af'
}
user_id = mon.StringField(db_field='customer_user_id')
从文档中可以看出。动态文档 class 允许灵活、可扩展和不受控制的模式。
只需使用 DynamicDocument
定义您的 class
class Y(DynamicDocument):
pass
添加你想要的任何属性
o=Y()
o.attr1="abc"
保存 ;-) 没有错误
o.save()
我正在尝试查询我的数据库。某些记录当前有额外的字段,这些字段未包含在我的模型架构中(错误,但我想处理这些情况)。当我尝试查询数据库并将记录转换为模式时,出现以下错误:
FieldDoesNotExist
The field 'X' does not exist on the document 'Y'
由于数据库中的额外字段与架构不同。
有没有办法忽略 mongoengine 中额外字段的模式验证?
我想你想跳过模式验证,所以当你保存文档时
document_name.save(validate=False)
我相信您想在定义模型时使用 DynamicDocument 而不是 Document,这将允许忽略数据库架构中的额外字段。
要在加载数据时有额外字段时忽略此错误,请在元字典中将 strict
设置为 False
。
class User(Document):
email = StringField(required=True, unique=True)
password = StringField()
meta = {'strict': False}
您可以从 mon.DynamicDocument 扩展。
class AF(mon.DynamicDocument):
meta = {
'collection': 'af'
}
user_id = mon.StringField(db_field='customer_user_id')
从文档中可以看出。动态文档 class 允许灵活、可扩展和不受控制的模式。
只需使用 DynamicDocument
定义您的 classclass Y(DynamicDocument):
pass
添加你想要的任何属性
o=Y()
o.attr1="abc"
保存 ;-) 没有错误
o.save()