mongoengine - Ignore extra fields for schema valid

2019-03-14 14:16发布

I am trying to query my database. Some records currently have extra fields that are not included in my model schema (by error, but I want to handle these cases). When I try to query the DB and transform the records into the schema, I get the following error:

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

Because of the extra fields in the database that differ from the schema.

Is there a way to ignore this schema validation for extra fields in mongoengine?

4条回答
不美不萌又怎样
2楼-- · 2019-03-14 14:58

You can extend from mon.DynamicDocument.

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

You can see from the document. A Dynamic Document class is allowing flexible, expandable and uncontrolled schemas.

查看更多
Juvenile、少年°
3楼-- · 2019-03-14 15:10

I believe you want to use a DynamicDocument instead of a Document when defining your model and that will allow extra fields in the db schema to be ignored.

查看更多
Viruses.
4楼-- · 2019-03-14 15:13

I think you want skip schema validation, so when you save your document

document_name.save(validate=False)
查看更多
\"骚年 ilove
5楼-- · 2019-03-14 15:14

For ignoring this error when having extra fields while data loading, set strict to False in your meta dictionary.

class User(Document):
    email = StringField(required=True, unique=True)
    password = StringField()
    meta = {'strict': False}
查看更多
登录 后发表回答