コレクション:
- 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 応答に必要なすべてのオブジェクトを取得します。
疑いはありませんか?