Ve vašem případě bych doporučil použít referenční data. Protože předpokládám, že s každou z těchto kolekcí musíte manipulovat samostatně (musíte být schopni upravovat/mazat/aktualizovat „produkty“ pomocí _id a provádět některé další složité dotazy, což je mnohem jednodušší a efektivní, když máte oddělené sbírka).
Zároveň bych nějaké uložil plně vložená data ve sbírce uživatelů, jen pro zrychlení zobrazení v prohlížeči návštěvníka. Řekněme, že máte stránku uživatele, kde chcete zobrazit profil uživatele a 5 nejlepších trhů a 20 nejlepších produktů. Těchto nejnovějších top-5 a top-20 můžete vložit do dokumentu uživatele a aktualizovat tyto vložené objekty, když se objeví nové trhy/produkty. V tomto případě - když zobrazíte stránku uživatele, musíte udělat pouze 1 dotaz na MongoDB. Takže to funguje jako cache. Pokud si návštěvník potřebuje zobrazit více produktů, přejde na další stránku „Produkty“ a zadá dotaz na samostatnou kolekci „Produkty“ v MongoDB.