MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Usando como um banco de dados gráfico para encontrar amigos de amigos no MongoDb


Embora não seja impossível, o MongoDB não seria uma boa opção para esse cenário.

A razão é que o MongoDB não faz JOINs. Quando você precisa de uma consulta que abrange vários documentos, precisa de uma consulta separada para cada documento.

No seu exemplo, cada user documento teria um array com o _id de seus amigos. Para encontrar "todos os amigos dos amigos do UserA que também são amigos do UserB" significaria que você:
  1. encontre userA e obtenha sua matriz de amigos
  2. encontre todos os usuários nessa matriz e obtenha suas matrizes de amigos
  3. encontre todos os usuários nessas matrizes que tenham UserB em sua matriz de amigos

Estas são três consultas que você precisa realizar. Entre cada uma dessas consultas, o conjunto de resultados deve ser enviado para o aplicativo, o aplicativo deve formular uma nova consulta e enviá-la de volta ao banco de dados. O conjunto de resultados retornado da 2ª consulta pode ser bastante grande, o que significa que a 3ª consulta pode demorar um pouco.

tl;dr: Use a ferramenta certa para o trabalho. Quando seus dados são baseados em gráficos e você deseja fazer consultas baseadas em gráficos, use um banco de dados gráfico.