Toto je klasický problém follower-followee a neexistuje na něj nikdo odpověď.. Podívejte se na tento odkaz:
mongo db design sledování a zdrojů, kam mám vložit?
Ve skutečnosti se tato situace velmi dobře hodí k relačnímu schématu, pokud by MongoDB a SQL server byly jedinou možností, kterou jste měli. Ale toto je zvláštní typ vztahového problému, ve kterém máte obousměrný vztah. To by možná lépe zvládla databáze grafů:
http://forum.kohanaframework.org/discussion/10130/followers-and-following-database-design-like-twitter/p1
Jde o to, že byste si mohli ponechat sledující nebo sledující v dokumentu uživatele, ale ne obojí, abyste se vyhnuli problémům s dvojitým smazáním. Takže pokud se musíte držet MongoDB, jedna cesta ven by mohla být... (za předpokladu, že lidé nesledují/nesledují nikoho to často),
Ponechat v dokumentu pouze sledující, protože když si prohlížím svůj profil, zajímali by mě lidé, které sleduji.. (to je důvod, proč jsem je sledoval na prvním místě, jo?)..A pak proveďte dotaz jako:db.Users.find({ user_id : { $in : followees })
To vám řekne, kdo všechno mě sleduje (řekněme, že moje id je 'user_id').
Další důvod, proč nenavrhuji opak, je ten.. jeden může sledovat maximálně 30-40 lidí, takže uživatelský dokument obsahující 30-40 sledujících by měl být v pořádku oproti uživatelskému dokumentu, který ukládá tisíce sledujících! S přístupem následovníka v dokumentu získáte zhruba stejně velké uživatelské dokumenty v celém textu. V přístupu následovníka v dokumentu budete mít některé velmi malé, ale také velmi objemné dokumenty. A v závislosti na množství údajů o sledujících, které vložíte (pokud existují, kromě follower_id), možná Chcete-li být opatrní ohledně omezení velikosti dokumentu.