2014-04-29 185 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),以防大量重複。這取決於您的應用程序特性,您應該如何使用我們的客戶收集並閱讀該收集的性能。 –