それはすべての非常にアプリ&データに依存しますが、客観的な立場からそのままモデリング、コスト、およびパフォーマンスを文書化するための「正しい」答えは、ありません:
あなたは可変長配列を持っている場合、あなたは意志最終的に文書の最大サイズ制限を超えます。そして、あなたのデータモデルは壊れます。
さらに、配列が大きいほど、配列を含むドキュメントを操作するコストが高くなります(たとえば、アイテムを追加するための更新)。
たとえば、あなたの質問の説明ごとに40,000個の製品がある場合:これらを配列に格納した場合は、毎回配列をクエリする必要があります。また、製品の大きさ(ID、説明、画像へのリンクなど)はどれくらいですか?その情報が大きくなればなるほど、ドキュメントで消費されるストレージが増えます。
また、最大ドキュメントサイズが2MBの場合:製品数が40,000の場合、製品あたり約50バイトの容量しか確保できません。
一方、製品ごとに1つのドキュメントがある場合は、特定の製品を簡単に照会できます。最大の文書サイズを超えてしまう恐れなしに、非常に大きな製品説明ができます。別のドキュメント(製品ドキュメントの配列)内に製品ID(必要に応じてどこか)の配列を配置することができます。
費用、効率性などに関するご質問は、ちょっとベンチマークをして(そして挿入/読み取り/クエリごとのRUコストを調べることで)その部分を判断することができます。