En vigtig overvejelse, når du designer et skema til MongoDB, er ikke, hvad dine data er, men hvordan du vil bruge dem. Uden at finde ud af, hvilken type læsninger og skrivninger du vil foretage (og hvor effektive de vil være), kan det være svært at designe et "optimalt" skema.
Der er nogle grundlæggende retningslinjer, som du kan overveje for at undgå at løbe ind i problemer. En af dem er at undgå at designe dokumenter, der bliver ved med at vokse ubegrænset. Det betyder, at du ikke skal indlejre ordrer i kundedokumenter. En anden regel er, at ting, der ikke er "af interesse" i sig selv (eller ikke eksisterer i sig selv), nok er bedre at blive indlejret. Dette antyder, at ordrevarer ikke fortjener deres egen samling og blot skal behandles som attributter for ordrer (hvilket er, hvad de faktisk er).
Denne nøjagtige øvelse er dækket i MongoDB-udvikleruddannelse, som er et ret typisk eksempel på skemadesign.
Nederste linje er, at du skal have tre samlinger:
Produkter
Kunder
Ordrer
Ordrer vil referere til kunder (valgfrit denormaliserer nogle oplysninger fra kundeindsamling), og de vil referere til produkter (i den række af ordreelementer, de vil indeholde).
Yderligere samlinger og nøjagtige felter i alle disse samlinger afhænger af din specifikke anvendelse, men jeg kan ikke se et gennemførligt scenarie for at have færre samlinger end disse tre.