2014-04-29 4 views
0

Une question simple et je me demandais la meilleure solution dans MongoDB:Modélisation des données avec Mongo

dans un environnement SQL (SGBDR), nous avons deux tables clients et les produits Donc, pour ce rapport, nous pourrions simplement écrire requête appropriée: RAPPORT : Donne les dix clients ont acheté les produits Sony l'année dernière 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 

Quelle est la meilleure approche pour MongoDB?

Répondre

1

Je chose que la meilleure approche pour quelque chose comme ceci est d'enregistrer toutes les données nécessaires directement à la collecte des clients avec une structure similaire à celle-ci:

{ 
    _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

Donc, dans ce cas, nous n'avons pas produits documents indépendamment, je signifie que nous aurons beaucoup de produits redondants qui est redondant et il est au lieu de la normalisation et c'est ce que je veux demander exactement – Nav

+0

Vous pouvez également utiliser [références] (http://docs.mongodb.org/manual/core/data- modeling-introduction/# references) et [modèle de données normalisé] (http://docs.mongodb.org/manual/core/data-model-design/#normalized-data-models) en cas de lot de doublons. Cela dépend du caractère de votre application, de la manière dont vous devez utiliser notre collection de clients et lire les performances de cette collection. –

Questions connexes