2016-09-05 65 views
1

我用它來設計「表」這樣混亂在設計使用MongoDB的

teacher 
- id 
- name 

student 
- id 
- teacher_id 
- name 

只承擔1名老師可以有很多學生DB文件,所以我把teacher_id能夠做加盟。

但在noSql爲什麼我應該做多個文件?我可以把一切user下,並使用嵌套的對象像

user = {[ 
    id:1, 
    type:teacher 
    student:[{ 
    id:321 
    }] 
]} 

想像我的應用程序需要檢索老師和學生在不同的選項卡的列表,還與模型我能得到我所需要的數據,我只是做了過濾器/在客戶端操縱,對嗎?

+0

這是類似於以前的問題,像這樣一個:http://stackoverflow.com/questions/5373198/mongodb-relationships-embed-or-reference –

回答

1

您可以在服務器端進行過濾並將過濾的數據發送給客戶端。它更高效。

如果使用 nodejs
+0

但是我的方法如何設計模式可接受?由於nosql的性質很靈活,我不必在定義數據庫模式時過於「小心」?對? – dfox

2

那麼我寧願你是用你的node.It使用模式和模型restriction.Your方法moongose NPM是RDBMS不錯,但在蒙戈你避免做連接。

在DESGIN這樣一個模式,根據您的要求和數據庫存情況的使用和read or write操作

匹配

VAR貓鼬=需要(「貓鼬」); var Schema = mongoose.Schema;

var Teachers = new Schema({ 
     //_id: ObjectId, 
     "name": { 
      "type": String, 
     }, 
     "students": [{ 
      name: String 
      }] 
     }) 

module.exports = mongoose.model('Teachers', Teachers); 

它避免了你的join.it管理所有的老師與他們各自的學生。