Håller en lista över friend_ids
i en användare, är vad jag kommer att rekommendera. Några skäl,
1.Du frågar en användare och du har en lista över alla vänner tillgänglig i förväg.
2.Förfrågningarna (väntande, accepterade) kan också hanteras genom att se att respektive ID ska finnas i både användarens vänlista. Så jag kan få en lista över faktiska och accepterade vänner genom att fråga
my_id, my_friend_ids = user._id, user.friend_ids
my_friends = db.users.find({'_id':{'$in': my_friend_ids}, 'friend_ids': my_id})
Ja, när du tar bort en vänskap måste du $pull
från vänlistan för båda användarna, men frekvensen av det skulle vara mycket mindre. Men du frågar mindre när du skaffar vänlistan, som skulle användas ofta.