EmbeddedDocument - это просто вложенный объект внутри вашего документа.Это вполне стандартно в mongodb и поэтому вполне нормально переключиться на это.Вы можете наблюдать снижение производительности с mongoengine, если у вас появятся сотни или тысячи вложенных структур, но это не похоже на ваш план здесь.
См. Ниже для хранения
class DateOfBirth(EmbeddedDocument):
year = IntField()
month = IntField()
day = IntField()
class Person(Document):
name = StringField()
dob = EmbeddedDocumentField(DateOfBirth)
Person(name='John', dob=DateOfBirth(day=1, month=12, year=2000)).save()
будет хранить объект, подобный этому:
# print(Person.objects.as_pymongo().first())
{
'_id': ObjectId('5d2decf7d8eefe0e58da364d'),
'name': 'John',
'dob': {
'year': 2000,
'month': 12,
'day': 1
}
}