繁体   English   中英

Mongo模式设计

[英]Mongo Schema Design

我刚接触Mongo。 刚开始使用Mongodb作为数据库的项目。 我不确定如何为文档库设计以下用例。

用户案例
1.供应商/分销商在我们的系统上有一个产品列表。
2.每个客户都有每种产品的标准价格表。
3.供应商/分销商还为每个客户定制每种产品的价格表。
例如。 CustA的productA价格与标准价格不同,仅对他可用。 4.有些产品只能通过自定义价格获得,我将那些属性为public = false的产品与之匹配。

我应该如何在文档库中解决这个问题?
我目前的设计是。
1. [ 产品文档 ]带有标准价格清单的嵌入式文档。
2. [product_Price 文档 ]带有oneToMany链接[ Product Document ],oneToMany链接到[ Customer Document ]
3. [ 客户文档 ]。

使用此模型,我面临分页查询的问题。
示例我查询按名称排序的前30个产品。 然后使用匹配的30个ProductId查询[ Product_Price Document ],以便为那些登录的客户提供这些自定义价格。

问题出在哪里,我无法查询并非针对所有人的用户定制的项目。

有没有更好的方法或设计架构,或者我应该如何处理查询?

我正在使用PHP,Doctrine2,Symfony2

当您查询Product_Price_Document时 ,将同时使用ProductID和当前的CustomerID对其进行查询。 还是我错过了什么?

这就是我的结构方式。

有两个集合:-产品-供应商

您的产品表将列出所有产品及其标准价格。 如果您的供应商页面针对特定产品的价格不同,则将包含一系列产品ID和替代价格。

如果您还跟踪客户,那么您也可以建立一个集合,并且几乎与供应商都具有归属关系。

简而言之:

collection.vendor:
 {"name":'foo',"products":[{"_id":mongoId,"priceOveride":15.50},..]}

collection.products:
 {"name":"bar","price":15.40}

深入了解可以使用的人际关系的优秀资源: 交互式学习Mongo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM