Tout d'abord un mot d'avertissement, ce n'est pas seulement un schéma relationnel mais un schéma récursivement relationnel. Vous pourriez suivre les relations et finir par charger tous le UserAccount
objets.
N'oubliez pas qu'il n'y a aucune jointure dans MongoDB - vous demandez donc au code client (mongoengine) d'effectuer des jointures d'application pour vous - ce qui signifie plusieurs requêtes, puis l'attribution des résultats aux bons documents - c'est cher. Alors, s'il vous plaît, demandez-vous "est-ce le bon outil pour le travail ? "
Cependant, vos observations sont correctes - par défaut select_related()
ne descend qu'une seule relation, donc pour un objet utilisateur, il ne déréférencera que le premier ensemble d'amis et non leurs amis. Vous pouvez modifier la profondeur en la passant à select_related(max_depth=2)
.