-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Description
GridFS data blocks delete by:
mongoengine/mongoengine/document.py
Lines 642 to 644 in 92f6fce
| for name, field in self._fields.items(): | |
| if isinstance(field, FileField): | |
| getattr(self, name).delete() |
then
mongoengine/mongoengine/fields.py
Lines 1839 to 1844 in 92f6fce
| def delete(self): | |
| # Delete file from GridFS, FileField still remains | |
| self.fs.delete(self.grid_id) | |
| self.grid_id = None | |
| self.gridout = None | |
| self._mark_as_changed() |
So calling Document.delete() won't ran into this issue, but cascade delete will, because:
mongoengine/mongoengine/queryset/base.py
Lines 505 to 509 in 161493c
| refs = document_cls.objects( | |
| **{field_name + "__in": self, "pk__nin": cascade_refs} | |
| ) | |
| if refs.count() > 0: | |
| refs.delete(write_concern=write_concern, cascade_refs=cascade_refs) |
this will call pymongo's delete directly, which will bypass file block delete logic that i referenced above
Metadata
Metadata
Assignees
Labels
No labels