2014-04-29 217 views
0

一个简单的问题,不知道在MongoDB中的最佳解决方案:在SQL数据建模与蒙戈

(RDBMS)环境中,我们有两个表的客户和产品 因此,对于这个报告中,我们可以简单地写正确的查询: 报告:给前十名客户购买了索尼产品在去年 QUERY:

SELECT c.name,sum(price) total FROM customers c JOIN orderItems o ON(c.cid=o.cid) 
           JOIN products p ON(p.pid=o.pid) 
WHERE p.manufacture='SONY' AND o.date=2014 
GROUP BY c.name 
ORDER BY DESC total 

什么是MongoDB的最好的方法?

回答

1

我事情,这样的事情最好的办法是将所有必要的数据直接保存到客户收集与类似这样的结构:

{ 
    _id: <ObjectId1>, 
    "customer_name": "XYZ", 
    "orders": [ 
     { 
      "id": 12345, 
      "date": "2014", 
      "items": [ 
       { 
        "id": 1, 
        "manufacturer": "SONY", 
        "product": "WALKMAN NWZ-W273L", 
        "color": "blue" 
       }, 
       { 
        "id": 2, 
        "manufacturer": "SONY", 
        "product": "VAIO XYZ", 
        "color": "silver" 
       } 
      ] 
     } 
    ] 
} 
+0

因此,在这种情况下,我们没有产品的独立文件,我这意味着我们会有很多重复的产品,这是多余的,而不是标准化,这就是我想问的问题 – Nav

+0

您也可以使用[引用](http://docs.mongodb.org/manual/core/data-建模/介绍/#参考)和[规范化数据模型](http://docs.mongodb.org/manual/core/data-model-design/#normalized-data-models),以防大量重复。这取决于您的应用程序特性,您应该如何使用我们的客户收集并阅读该收集的性能。 –