sql >> Base de Datos >  >> NoSQL >> MongoDB

Uso como base de datos de gráficos para encontrar amigos de amigos en MongoDb

Aunque no sería imposible, MongoDB no encajaría bien en este escenario.

La razón es que MongoDB no hace JOIN. Cuando necesite una consulta que abarque varios documentos, necesitará una consulta separada para cada documento.

En tu ejemplo, cada user el documento tendría una matriz con el _id de sus amigos. Para encontrar "todos los amigos de los amigos del UsuarioA que también son amigos del UsuarioB" significaría que:

  1. busque el usuarioA y obtenga su matriz de amigos
  2. busque todos los usuarios en esa matriz y obtenga sus matrices amigas
  3. encontrar todos los usuarios en estas matrices que tienen UserB en su matriz de amigos

Estas son tres consultas que tienes que realizar. Entre cada una de estas consultas, el conjunto de resultados debe enviarse a la aplicación, la aplicación debe formular una nueva consulta y enviarla de vuelta a la base de datos. El conjunto de resultados devuelto por la segunda consulta puede ser bastante grande, lo que significa que la tercera consulta puede tardar un poco.

tl;dr: Utilice la herramienta adecuada para el trabajo. Cuando sus datos estén basados ​​en gráficos y desee realizar consultas basadas en gráficos, utilice una base de datos de gráficos.