Mongoengine очень медленно работает с большими документами по сравнению с обычным использованием pymongo

У меня есть следующая модель mongoengine:

class MyModel(Document):
    date        = DateTimeField(required = True)
    data_dict_1 = DictField(required = False)
    data_dict_2 = DictField(required = True)

В некоторых случаях документ в БД может быть очень большим (около 5-10 МБ), а поля data_dict содержат сложные вложенные документы (dict списков dicts и т. Д.).

Я столкнулся с двумя (возможно, связанными) проблемами:

Когда я запускаю нативный запрос pymongo find_one (), он возвращается через секунду. Когда я запускаю MyModel.objects.first (), это занимает 5-10 секунд.

Когда я запрашиваю один большой документ из БД и затем обращаюсь к его полю, требуется 10-20 секунд, чтобы выполнить следующее:

m = MyModel.objects.first()
val = m.data_dict_1.get(some_key)

Данные в объекте не содержат никаких ссылок на какие-либо другие объекты, поэтому это не проблема разыменования объектов.
Я подозреваю, что это связано с некоторой неэффективностью внутреннего представления данных mongoengine, которое влияет на конструкцию объекта документа, а также на доступ к полям. Что я могу сделать, чтобы улучшить это?

Ответы на вопрос(1)

Ваш ответ на вопрос