MongoDB - 为eshop构建集合和查询的正确方法

时间:2013-02-18 02:11:24

标签: mongodb doctrine-odm

我是MongoDB的新手,我找到了eshop的解决方案..如何最好的构建:

集合:

  • 需要很多项目类型,如cd,dvd,books .. with author
  • 需要促销包=商品有很多商品(cd,dvd,书籍......)

查询:

  • 需要这些项目的目录
  • 需要过滤 - 作者,项目类型

我不确定它是否可能以及何时使用嵌入和参考时..我也在考虑doctrine2 odm鉴别器

谢谢!

1 个答案:

答案 0 :(得分:1)

类别:

  • 产品:它包含以下字段:type,author(具有名称的其他对象等)
  • promotionalPackages :它包含名称,折扣等字段。

此外产品集合包含一个名为'promotional_package'的字段,其中包含_id到 promotionalPackages 的对象

查询:

  • 按作者→db.products({ 'author.name': 'authorName' })
  • 进行过滤
  • 按类型→db.products({ type:'DVD' })
  • 进行过滤
  • 获取您需要进行2次查询的促销商品:一个用于获取促销包db.promotionalPackages.find({name:'my_promotional_package'})的_id,另一个用于获取属于它的所有商品db.products.find({ promotional_package: promotional_package._id })

注意:避免使用dbref在产品和 promotionalPackages 之间进行引用,您不需要它。

通常:将您访问的所有对象/文档(产品和作者)以及可单独访问的单独对象放在一起。研究您的用例,然后研究您的查询,并为您的模式建模,以便在单个查询中获取您在http响应中所需的所有对象。

有疑问吗?