sourcecode

mongoengine - 스키마 유효성 검사를 위해 추가 필드를 무시

copyscript 2023. 5. 29. 11:06
반응형

mongoengine - 스키마 유효성 검사를 위해 추가 필드를 무시

데이터베이스를 쿼리하려고 합니다.일부 레코드에는 현재 모델 스키마에 포함되지 않은 추가 필드가 있습니다(오류로 인해). 하지만 이러한 경우를 처리하려고 합니다.DB를 쿼리하고 레코드를 스키마로 변환하려고 하면 다음 오류가 발생합니다.

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

스키마와 다른 데이터베이스의 추가 필드 때문입니다.

mongoengine의 추가 필드에 대한 스키마 유효성 검사를 무시할 수 있는 방법이 있습니까?

데이터를 로드하는 동안 추가 필드가 있을 때 이 오류를 무시하려면 다음을 설정합니다.strict로.False메타 사전에 있습니다.

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

모델을 정의할 때 Document 대신 Dynamic Document를 사용하면 db 스키마의 추가 필드를 무시할 수 있습니다.

문서를 저장할 때 스키마 유효성 검사를 건너뜁니다.

document_name.save(validate=False)

월요일부터 연장할 수 있습니다.동적 문서입니다.

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

그 문서를 보면 알 수 있습니다.동적 문서 클래스는 유연하고 확장 가능하며 제어되지 않는 스키마를 허용합니다.

DynamicDocument를 사용하여 클래스를 정의하기만 하면 됩니다.

class Y(DynamicDocument):
    pass

원하는 특성 추가

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

오류 없이 저장 ;-)

o.save()

언급URL : https://stackoverflow.com/questions/29495037/mongoengine-ignore-extra-fields-for-schema-validation

반응형