2015-03-31 77 views
1

开始学习MongoDB + node.js. 为了实践我想创建收集数据和绘制图表的webapp。但是我为选择MongoDB数据库的数据模型遇到了很大的问题。MongoDB。我应该为我的项目选择哪种数据模型?

它现在是如何工作的,但我认为这是糟糕的结构。

我的服务每小时从API检索所有数据并将其收集到集合“帐户”中。

主要问题:可以这么做:每个小时的特殊对象“expStart”中的每个经验值都由请求时间生成的唯一密钥?

{ 
"_id" : ObjectId("54bd56cb699f4890160aacc9"), 
"name" : "Shubiii", 
"characters" : [ 
    { 
     "online" : false, 
     "rank" : 562, 
     "dead" : false, 
     "name" : "ShrupShurp", 
     "league" : "hardcore", 
     "level" : 93, 
     "class" : "Ranger", 
     "experience" : 2515197599, 
     "expStat" : { 
      "dd2015_1_19_19_9" : 122120, 
      "dd2015_1_19_20_11" :45222 
     } 
    }, 
    { 
     "online" : false, 
     "rank" : 563, 
     "dead" : false, 
     "name" : "ShrupShurp2", 
     "league" : "hardcore", 
     "level" : 93, 
     "class" : "Ranger", 
     "experience" : 2515197599, 
     "expStat" : { 
      "dd2015_1_19_19_9" : 3122120, 
      "dd2015_1_19_20_11" :21212 
     } 
    } 
], 
"challenges" : { 
    "total" : 3 
}, 
"twitch" : { 
    "name" : "" 
} 

}这是API的数据结构(http://www.pathofexile.com/developer/docs/api):

{ 
"total": 15000, 
"entries": [ 
    { 
     "online": false, 
     "rank": 2, 
     "dead": false, 
     "character": { 
      "name": "iamgodyi", 
      "level": 100, 
      "class": "Ranger", 
      "experience": 4250334444 
     }, 
     "account": { 
      "name": "TW_James", 
      "challenges": { 
       "total": 0 
      }, 
      "twitch": { 
       "name": "destiny601" 
      } 
     } 
    }, 
    { 
     "online": true, 
     "rank": 3, 
     "dead": false, 
     "character": { 
      "name": "xVisco", 
      "level": 100, 
      "class": "Templar", 
      "experience": 4250334444 
     }, 
     "account": { 
      "name": "xVisco", 
      "challenges": { 
       "total": 0 
      } 
     } 
    } 
] 

}

对不起

结构从集 “账户” 一个文档的我的英文。

回答

0

您可以使用此结构。

{ 
    "_id" : ObjectId("54bd56cb699f4890160aacc9"), 
    "name" : "Shubiii", 
    "characters" : { 
        "online" : false, 
        "rank" : 562, 
        "dead" : false, 
        "name" : "ShrupShurp", 
        "league" : "hardcore", 
        "level" : 93, 
        "class" : "Ranger", 
        "experience" : 2515197599, 
        "expStat" : { 
           "dd2015_1_19_19_9" : 122120, 
           "dd2015_1_19_20_11" :45222 
           } 
        }, 
    "challenges" : { 
        "total" : 3 
       }, 
    "twitch" : { 
       "name" : "" 
      } 
} 
+0

你能解释为什么你决定去这个模型? – chridam 2015-03-31 12:00:57

+0

是的在我的情况下,如果我想检索像等级等值,然后我很容易地检索 – Logicbomb 2015-03-31 12:04:38

+0

如果你有好主意,那么你会张贴在这里。 – Logicbomb 2015-03-31 12:05:27