J'essaie d'interroger ma base de données. Certains enregistrements ont actuellement des champs supplémentaires qui ne sont pas inclus dans mon schéma de modèle (par erreur, mais je veux gérer ces cas). Lorsque j'essaie d'interroger la base de données et de transformer les enregistrements dans le schéma, j'obtiens le message d'erreur suivant:
FieldDoesNotExist
The field 'X' does not exist on the document 'Y'
En raison des champs supplémentaires dans la base de données qui diffèrent du schéma.
Existe-t-il un moyen d'ignorer cette validation de schéma pour les champs supplémentaires dans mongoengine?
Pour ignorer cette erreur lorsque des champs supplémentaires sont chargés lors du chargement des données, définissez strict
sur False
dans votre méta dictionnaire.
class User(Document):
email = StringField(required=True, unique=True)
password = StringField()
meta = {'strict': False}
Je pense que vous souhaitez utiliser un DynamicDocument au lieu d'un document lors de la définition de votre modèle, ce qui permettra d'ignorer les champs supplémentaires du schéma de base de données.
Je pense que vous voulez ignorer la validation du schéma, donc lorsque vous enregistrez votre document
document_name.save(validate=False)
Vous pouvez prolonger monDynamicDocument.
class AF(mon.DynamicDocument):
meta = {
'collection': 'af'
}
user_id = mon.StringField(db_field='customer_user_id')
Vous pouvez voir à partir du document. Une classe de document dynamique permet des schémas flexibles, extensibles et non contrôlés.