我想知道使用MongoDB存储好友关系数据的最佳方法是什么?
来自mysql我有一个单独的表,其中包含两个外键的朋友关系,每个外键都指向"友谊"中的朋友,但是MongoDB可能有引用数组甚至嵌入文档.所以最好的方法是存储这些关系
立即第一反应是我在每个用户中存储了一系列朋友对象id,然而,这让我感到困扰,因为那样,为了消除"友谊",我必须删除朋友的文件而如果我存储了单独集合中的关系(la SQL)我可以通过修改一个集合来删除或添加关系.
谢谢!
sim*_*rsh 29
保留friend_ids用户列表是我推荐的.几个原因,
1.您查询用户,并且您可以预先找到所有朋友的列表.
2.通过查看用户的朋友列表中应该存在相应的ID,也可以处理请求(待决,接受).所以,我可以通过查询得到实际和被接受的朋友的列表
my_id, my_friend_ids = user._id, user.friend_ids
my_friends = db.users.find({'_id':{'$in': my_friend_ids}, 'friend_ids': my_id})
Run Code Online (Sandbox Code Playgroud)
是的,在删除友谊时,您必须$pull从两个用户的朋友列表中获取,但频率会更低.但是你在获取友情列表时会少查询,这会经常使用.