Поддържане на списък с friend_ids
в потребител, това е, което ще препоръчам. Няколко причини,
1. Запитвате потребител и имате предварително наличен списък с всички приятели.
2. Заявките (изчакващи, приети) също могат да бъдат обработени, като се види, че съответните идентификатори трябва да присъстват и в списъка с приятели на потребителя. Така че мога да получа списък с действителни и приети приятели чрез запитване
my_id, my_friend_ids = user._id, user.friend_ids
my_friends = db.users.find({'_id':{'$in': my_friend_ids}, 'friend_ids': my_id})
Да, докато премахвате приятелство, трябва да $pull
от списъка с приятели и на двата потребителя, но честотата на това би била много по-малка. Но вие задавате по-малко заявки, за да получите списъка с приятели, който ще се използва често.