-1

私はMongoDBで非常に新しく、eshopの解決策を見つけました..どのように構築するのが最善ですか:

コレクション:

  • CD、DVD、本など、多くの種類のアイテムが必要です..著者と一緒に
  • プロモーション パッケージが必要 = アイテムには多くのアイテム (CD、DVD、書籍など) があります。

クエリ:

  • これらのアイテムのカタログが必要です
  • フィルタリングが必要 - 作成者、アイテム タイプ

可能かどうか、いつ埋め込みを使用するのか、いつ参照するのかはわかりません..私はdoctrine2 odmディスクリミネーターについても考えています

ありがとう !

4

1 に答える 1

1

コレクション:

  • products : 次のフィールドが含まれます: タイプ、作成者 (名前などを持つ他のオブジェクトです)
  • PromotionPackages : 名前、割引などのフィールドが含まれています。

さらに、製品コレクションには、 promotionalPackagesのオブジェクトへの _id を含む「promotional_package」というフィールドが含まれています。

クエリ:

  • 著者でフィルタリングする →db.products({ 'author.name': 'authorName' })
  • 種類で絞り込む →db.products({ type:'DVD' })
  • プロモーション アイテムを取得するには、2 つのクエリを作成する必要があります。1 つはプロモーション パッケージの _id を取得しdb.promotionalPackages.find({name:'my_promotional_package'})、もう 1 つはそれに属するすべての製品を取得します。db.products.find({ promotional_package: promotional_package._id })

注意: dbref を使用して products と PromotionPackages の間を参照ないでください。必要ありません。

一般に、アクセスするオブジェクト/ドキュメント (製品と作成者) をまとめて、個別にアクセスできるオブジェクトを分離します。ユース ケース、次にクエリを調査し、スキーマをモデル化して、単一のクエリで http 応答に必要なすべてのオブジェクトを取得します。

疑いはありませんか?

于 2013-02-18T02:23:41.660 に答える