-
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