Garder une liste de friend_ids
chez un utilisateur, c'est ce que je recommanderai. Quelques raisons,
1.Vous interrogez un utilisateur et vous avez la liste de tous les amis disponibles à l'avance.
2.Les demandes (en attente, acceptées) peuvent également être traitées, en veillant à ce qu'un identifiant respectif soit présent dans la liste d'amis de l'utilisateur. Ainsi, je peux obtenir la liste des amis réels et acceptés en interrogeant
my_id, my_friend_ids = user._id, user.friend_ids
my_friends = db.users.find({'_id':{'$in': my_friend_ids}, 'friend_ids': my_id})
Oui, lors de la suppression d'une amitié, vous devez $pull
de la liste d'amis des deux utilisateurs, mais la fréquence de ce serait beaucoup moins. Mais vous interrogez moins pour obtenir la liste d'amis, qui serait fréquemment utilisée.