[toc]
## pre
集合、Schema、模型 都是指同一個東東
## Schema(概要)
mongoDB中沒有`表結構`,這意著每一條記錄 (文檔模型),都可以是完全不一樣的數據結構
So,為了解決這個問題,**mongoose** 幫我們實現了一個名為`Schema`的東東
使用Schema,能幫助我們規范一個`collection` 里的 文檔。
```
let UserSchema = new mongoose.Schema({
name:String
,age:Number
}
//如果你指定Schema的時候指定了collection的值,那么會使用這個值作為集合的名字
//,否則就是模型名轉小寫再轉復數 User-user-users
,{collection:'user'}
);
```
- 如果對象中的字段在Schema中沒有定義,則會被忽略掉
- 如果說對象中的字段少于Schema中定義的字段, 且少的那部分字段不是必須的,那么缺少的字段不會被保存(缺省,保存的JSON中不會存在這些個字段)
- 如果提供的字段類型和Schema中定義的不匹配,則會報錯
定義好一個`Schema`后,**并不**會在數據庫中立馬創建一個collection,它并沒有操作數據庫的能力,只是規范了存放的文檔的數據類型
## 模型
這個時候我們需要通過, `createConnection`返回的鏈接對象下的`.model`方法來創建一個**模型**,并將剛才定義的Schema骨架**注冊***進去。
```
let User = connection.model('User', UserSchema);
```