I ditt fall skulle jag råda dig att använda refererade data. För jag antar att du måste manipulera var och en av dessa samlingar på egen hand (du måste kunna redigera/ta bort/uppdatera "produkter" av _id och göra några andra komplicerade frågor, vilket är mycket enklare och effektivt när du har separata samling).
Samtidigt skulle jag lagra en del fullständiga inbäddade data i användarsamlingen, bara för att snabbare visa till besökarens webbläsare. Låt oss säga att du har en användares sida där du vill visa användarens profil och topp-5 marknader och topp-20 produkter. Du kan bädda in de senaste topp-5 och topp-20 i användarens dokument och uppdatera de inbäddade objekten när det finns nya marknader/produkter. I det här fallet - när du visar användarens sida behöver du bara göra en fråga till MongoDB. Så det här fungerar som cache. Om besökaren behöver se fler produkter, går han till nästa sida "Produkter" och frågar efter separat "Produkter"-samling i MongoDB.