我对Mongo很新。刚刚开始使用Mongodb作为数据库的项目。 我不确定如何将以下用例设计到文档库数据库。
用户案例
1.供应商/分销商在我们的系统上有产品清单
2.对于任何客户,每种产品都有一个标准价格表
3.供应商/分销商还为每个客户定制每种产品的价格表
例如。 CustA的产品A与标准的价格不同,只有他才能使用。
4.部分产品仅通过自定义价格提供,我将这些产品与属性public = false匹配。
我应该如何在文档库数据库中解决这个问题?
我目前的设计是。
1. [产品文档],带有标准价格表的嵌入式文档。
2. [ Product_Price文档],包含oneToMany链接[产品文档]和oneToMany至[客户文档]
3. [客户文件]。
使用这个模型,我遇到了通过分页查询的问题
示例I查询按名称排序的前30个产品。然后使用匹配的30 ProductId查询[ Product_Price文档],以便我为登录的客户提供这些自定义价格。
问题来自于我无法查询为每个人都无法使用的自定义项目。
是否有更好的方法或设计架构或我应该如何处理查询?
我正在使用PHP,Doctrine2,Symfony2
答案 0 :(得分:0)
当您查询 Product_Price_Document 时,使用ProductID和当前的CustomerID查询它。或者我错过了什么?
答案 1 :(得分:0)
以下是我如何构建它。
有两个系列: - 产品 - 供应商
您的产品表中会列出您所有产品及其标准价格。您的供应商页面会有一系列产品ID以及覆盖价格,如果它们对该特定产品的价格不同。
如果您也在跟踪客户,那么您也可以将其作为一个集合,并且几乎与供应商建立了属于该关系。
简而言之:
collection.vendor:
{"name":'foo',"products":[{"_id":mongoId,"priceOveride":15.50},..]}
collection.products:
{"name":"bar","price":15.40}
阅读更多关于您可以使用的关系的优秀资源: Learn Mongo Interactively