Това е класически проблем за последователи и следващи и няма един отговор за него.. Вижте тази връзка:
mongo db дизайн на следване и емисии, къде трябва да вградя?
Всъщност тази ситуация се поддава много добре на релационна схема, ако MongoDB и SQL сървър бяха единствените възможности за избор, които имате. Но това е специален тип релационен проблем, при който имате двустранна връзка. Това може би може да се обработи по-добре от база данни с графики:
http://forum.kohanaframework.org/discussion/10130/followers-and-following-database-design-like-twitter/p1
Работата е там, че можете да запазите последователи или последователи в потребителски документ, но не и двете, за да избегнете проблеми с двойното изтриване. Така че, ако трябва да се придържате към MongoDB, един изход може да бъде..(ако приемем, че хората не следват/прекратяват следването на никого това често),
Запазете само последователите в документа, защото когато преглеждам профила си, ще се интересувам от хората, които следвам.. (това е причината да ги последвам на първо място, нали?)..И след това направете заявка като:db.Users.find({ user_id : { $in : followees })
Това ще покаже кои всички ме следват (да кажем, че моят идентификатор е 'user_id').
Друга причина, поради която не предлагам обратното е, че.. човек може да следва най-много 30-40 души, така че потребителски документ, съхраняващ 30-40 последователи, би трябвало да е подходящ за сравнение с потребителски документ, съхраняващ хиляди последователи! С подхода „последовател в документ“ вие получавате грубо еднакви по размер потребителски документи навсякъде. При подхода „последовател в документ“ ще имате и някои много малки, но и много обемисти документи. И в зависимост от количеството данни за последователи, които сте въвели (ако има такива, с изключение на follower_id), вие можете искате да внимавате за ограничението за размер на документа.