По умолчанию MongoDB не проверяет целостность ваших данных, поэтому удаление документов, на которые ссылаются другие документы, приведет к проблемам согласованности.
Вы должны использовать ListField
с ReferenceFields
. ReferenceFields
может использоваться с опцией reverse_delete_rule=mongoengine.PULL
или иначе:
mongoengine.DO_NOTHING Это значение по умолчанию и ничего не будет делать. Удаления выполняются быстро, но могут приводить к несогласованности базы данных или зависанию ссылок.
mongoengine.DENY Исключено, если все еще существуют ссылки на удаляемый объект.
mongoengine.NULLIFY полей Любой объект, по-прежнему со ссылкой на объект удаляется, удаляются (с использованием «unset» операцию MongoDB в), эффективно сводит на нет отношения.
mongoengine.CASCADE Любой объект, содержащий поля, которые к Ссылающиеся объекта удаляются, удаляются первым.
mongoengine.PULL Удаляет ссылку на объект (с помощью «тянуть» операцию MongoDB в) из полей любого объекта из ListField (ReferenceField).
Можете ли вы показать модель? –