2013-02-14 111 views
0

我開始使用NodeJS和MongoDB開發在線足球管理遊戲。但現在我不知道,我應該使用多個集合,還是我可以把所有東西放在一起?例如:MongoDB收集計劃

{ 
    "_id" : ObjectId("5118ee01032016dc02000001"), 
    "country" : "Aruba", 
    "date" : "February 11th 2013, 3:11:29 pm", 
    "email" : "[email protected]", 
    "name" : "test", 
    "pass" : "9WcFwIITRp0e82ca3c3b314a656bfb437553b1d013", 
    "team" : { 
    "name" : "teamname", 
    "logo" : "urltologo", 
    "color" : "color", 
    "players" : [{ 
     "name" : "name", 
     "surname" : "surname", 
     "tackling" : 58, 
     "finishing" : 84, 
     "pace" : 51, 
     .... 
     }, { 
     "name" : "name", 
     "surname" : "surname", 
     "start_age" : 19, 
     "tackling" : 58, 
     "finishing" : 84, 
     "pace" : 51, 
     ... 
     }], 
    "stadium" : { 
     "name" : "stadium", 
     "capacity" : 50000, 
     "pic" : "http://urltopic", 
     .... 
    }, 
    }, 
} 

或爲用戶創建,賽程,球員,球隊不同的收藏?或者其他方法?

回答

1

當我開始使用MongoDB時,我以「嵌入所有東西」的口頭禪,這正是你在上面做的。但是,對於可能變得非常大的子文檔,需要考慮一些問題。您應該考慮多久更新一次特定的文檔或子文檔。例如,您的玩家可能會定期更新,因此您可能希望將其放入自己的收藏中以便於使用。無論如何,MongoDB的靈活性使得對這個問題確實沒有「正確的」答案,但它可以幫助您在數據建模中參考docs

1

關於如何在mongo中設計模式沒有硬性規定。很大程度上取決於您的應用程序數據訪問模式,數據訪問頻率以及不同實體之間的關係,它們如何縮小/增長/更改以及哪些保持完好。在不知道應用程序應該如何工作的情況下給出建議是不可行的。我建議你參考一本書,例如MongoDB in Action,它有關於如何在mongo中設計模式的建議,以正確考慮帳戶應用程序的特定需求。