Necesitamos poder realizar rápidamente consultas en el conjunto de amigos de un usuario y amigos de amigos. Esto sería relativamente sencillo en una base de datos relacional, pero estoy algo atrapado en la mejor manera de lograrlo en MongoDB. Almacenamos las identificaciones de usuario de los amigos de un usuario en una matriz en el documento de usuario, por lo que la solución obvia es hacer esto:Modelando relaciones de amigo de amigo en MongoDB
- Tire todos los ID de amigo usuario de usuario doc
- Tire todas las matrices de amistad de documentos de usuarios de esos amigos (usando una consulta de $ en todos los ID de amigo), combine el lado de la aplicación en un conjunto y luego combine eso con los ID de usuario amigos de primer nivel para obtener un conjunto de amigos y amigos
- Use ese conjunto para realizar la consulta final (usando $ in) en todos los amigos y amigos de amigos
Si bien es sencillo, esto parece una gran cantidad de ida y vuelta, en comparación con lo que podríamos hacer con una combinación en una base de datos relacional. ¿Existe alguna forma más eficiente de hacer esto en MongoDB, o es este un problema más adecuado para un RDBMS?
Esto supone que las relaciones de amistad siempre son mutuas ... si alex es amigo de jon, entonces jon también debe ser amigo de alex. – Jay
¿qué tal conseguir amigos en común? –
Mira https://gist.github.com/levicook/4132037 para amigos en común – rodi