我们需要能够快速地在一组用户的朋友和朋友的朋友中执行查询。这在关系数据库中会相对简单,但我在MongoDB中完成它的最佳方式有点困难。我们存储的用户的朋友的用户ID的用户文档中的数组,所以显而易见的解决方案是要做到这一点:在MongoDB中为朋友关系建模的朋友
- 把所有来自用户的文档
- 拉离用户文档的所有朋友阵列朋友的用户ID (在所有朋友ID中使用$ in查询),将应用程序端组合到一个集合中,然后将其与第一级朋友用户ID结合以获得所有朋友和朋友的朋友
- 使用该设置为在所有朋友和朋友的朋友中执行最终查询(使用$ in)
虽然简单明了,但与我们在关系数据库中加入可以做的事情相比,这似乎是来回式的大量数据。在MongoDB中有没有更有效的方法来做到这一点,或者这是一个最适合RDBMS的问题吗?
这假定朋友关系总是相互的......如果alex是jon的朋友,那么jon也必须是alex的朋友。 – Jay
如何获得共同的朋友? –
看看https://gist.github.com/levicook/4132037对于共同朋友 – rodi