Отговорът на подобни въпроси в MongoDB често е денормализиране на вашите данни. Ако имате нужда само от списък на потребителите в групата, можете да съхраните потребителския идентификатор и потребителското име в груповия документ. По някакъв начин вие структурирате вашата база данни според резултата, който искате да видите на екрана, вместо да се опитвате да я поставите в някакъв нормализиран формат.
Ясно е, че това ще работи само ако вашият списък с потребителски групи (с имена) може да се побере в един документ, но настоящият ви подход също има някои ограничения по отношение на максималния размер на група.
Друг подход би бил да се съхраняват групите, към които принадлежи даден потребител, в масив на всеки документ „Потребител“. Добавете индекс към това поле от масив и сега можете да намерите потребители по група. Като се има предвид, че има вероятност даден потребител да принадлежи към по-малко групи, отколкото има членове в групата, това може да е най-добрият подход тук.
db.user.save({_id:"u1", name:"u1 name", groups:[{_id:"g1", name:"Group One"}, ...]});
Отново можете да съхраните името на групата с нейния _id, така че да можете незабавно да покажете списъка с групи, към които принадлежи даден потребител, с едно отиване и връщане. Разбира се, ако разрешите промяна на име на група, ще трябва да стартирате фонова задача, за да коригирате всички тези копия на името.
Също така бих използвал вградения генератор на идентификатори на MongoDB, а не вашия собствен, той има много желани свойства.