我正在尝试查询我的数据库。某些记录当前有额外的字段未包含在我的模型模式中(错误,但我想处理这些情况)。当我尝试查询数据库并将记录转换为模式时,我收到以下错误:
FieldDoesNotExist
The field 'X' does not exist on the document 'Y'
由于数据库中的额外字段与架构不同。
有没有办法忽略mongoengine中额外字段的模式验证?
答案 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)
class Y(DynamicDocument):
pass
o=Y()
o.attr1="abc"
o.save()