Mongodb Mongo模式设计

Mongodb Mongo模式设计,mongodb,database-design,database-schema,mongodb-php,database,Mongodb,Database Design,Database Schema,Mongodb Php,Database,我对Mongo很陌生。刚刚启动了一个使用Mongodb作为数据库的项目。 我不确定应该如何为文档库数据库设计以下用例 用户案例 1.供应商/分销商在我们的系统上有产品列表。 2.每个产品都有一个标准的价格表供任何客户使用。 3.供应商/分销商还为每位客户定制了每种产品的价目表。 库斯塔有一款产品,价格与标准不同,只对他开放。 4.有些产品只能通过自定义价格获得,我将这些产品与属性public=false匹配 如何在文档库数据库中解决此问题? 我目前的设计是。 1.[产品文档]带有标准价目表的嵌入

我对Mongo很陌生。刚刚启动了一个使用Mongodb作为数据库的项目。 我不确定应该如何为文档库数据库设计以下用例

用户案例
1.供应商/分销商在我们的系统上有产品列表。
2.每个产品都有一个标准的价格表供任何客户使用。
3.供应商/分销商还为每位客户定制了每种产品的价目表。
库斯塔有一款产品,价格与标准不同,只对他开放。 4.有些产品只能通过自定义价格获得,我将这些产品与属性public=false匹配

如何在文档库数据库中解决此问题?
我目前的设计是。
1.[产品文档]带有标准价目表的嵌入式文档
2.[产品价格文档]与oneToMany链接[产品文档]和oneToMany至[客户文档]
3.[客户文档]

使用此模型,我面临分页查询的问题。
示例我查询了按名称排序的前30个产品。然后用匹配的30个ProductId查询[产品价格文档],这样我就可以为登录的客户定制价格了。

问题在于,我无法查询针对用户自定义的项目,而不是每个人都可以查询的项目

是否有更好的方法或设计模式,或者我应该如何处理查询?


当您查询产品\u价格\u文档时,我使用PHP、Doctrine2、Symfony2

同时使用ProductID和当前CustomerID进行查询。还是我遗漏了什么?

以下是我的结构

有两个系列: -产品 -卖主

您的产品表将列出所有产品及其标准价格。您的“供应商”页面将有一个产品ID数组,以及一个覆盖价格,以防他们对该特定产品有不同的价格

如果您也在跟踪客户,那么您也可以将其作为一个集合,并与供应商建立“属于”关系

简言之:

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

collection.products:
 {"name":"bar","price":15.40}
非常好的资源,可以让您更深入地了解您可以使用的关系:

感谢巴沙尔·阿卜杜拉的回复!!是的,我正在使用ProductId和CustomerId查询Product\u Price\u文档。在我看来,您应该在这里得到您想要的结果。但看看其他的评论和答案,这些评论和答案表明嵌入文档可能根本不是一个坏的选择。在这种情况下,您应该为每个客户嵌入一个价目表,使用产品价目表作为初始版本。从那时起,仅查询客户价目表。数据重复有点痛苦,但在非关系模式中很难避免。复制允许获取单个文档,这提供了高性能。用MongoDB格式(JSON)键入您想要的模式,并将其添加到您的问题中,我将查看如何编辑它以允许您进行所需的查询。感谢Frederico的反馈。还有链接!!通过Mongo了解更多信息。再问一个简单的问题。如果产品价格覆盖有多个,因为每个客户的价格可能不同。如何将客户链接到嵌入式价格覆盖?或者这可能吗?啊,如果每个客户都有一个价格覆盖;然后我会把它放在用户集合中。