Primeiro, uma palavra de advertência, este não é apenas um esquema relacional, mas um esquema recursivamente relacional. Você pode seguir os relacionamentos e acabar carregando todos a
UserAccount
objetos. Lembre-se de que não há junções no MongoDB - então você está pedindo ao código do cliente (mongoengine) para executar em junções de aplicativos para você - o que significa várias consultas e, em seguida, atribuir os resultados aos documentos corretos - isso é caro. Então, pergunte a si mesmo "essa é a ferramenta certa para o trabalho? "
No entanto, suas observações estão corretas - por padrão select_related() apenas desce uma única relação, portanto, para um objeto de usuário, ele apenas desreferenciará o primeiro conjunto de amigos e não seus amigos. Você pode alterar a profundidade passando para
select_related(max_depth=2)
.