Pertimbangan penting saat merancang skema untuk MongoDB bukanlah data Anda, tetapi bagaimana Anda akan menggunakannya. Tanpa mengetahui jenis baca dan tulis apa yang akan Anda lakukan (dan seberapa baik kinerjanya), akan sulit untuk merancang skema "optimal".
Ada beberapa pedoman dasar yang dapat Anda pertimbangkan untuk menghindari masalah. Salah satunya adalah menghindari mendesain dokumen yang terus berkembang tanpa batas. Itu berarti Anda tidak boleh menyematkan pesanan ke dalam dokumen pelanggan. Aturan lain adalah bahwa hal-hal yang tidak "menarik" dengan sendirinya (atau tidak ada dengan sendirinya) mungkin lebih baik disematkan. Hal ini menunjukkan bahwa orderItems tidak layak untuk dikoleksi sendiri dan harus diperlakukan sebagai atribut pesanan (sebenarnya memang demikian).
Latihan yang tepat ini tercakup dalam pelatihan pengembang MongoDB, menjadi contoh khas desain skema.
Intinya adalah Anda harus memiliki tiga koleksi:
Produk
Pelanggan
Pesanan
Pesanan akan mereferensikan pelanggan (secara opsional mendenormalisasi beberapa informasi dari pengumpulan pelanggan) dan mereka akan mereferensikan produk (dalam susunan item pesanan yang akan dikandungnya).
Koleksi lebih lanjut, dan bidang eksak di semua koleksi ini bergantung pada kasus penggunaan spesifik Anda, tetapi saya tidak dapat melihat skenario yang layak untuk memiliki koleksi yang lebih sedikit daripada ketiganya.