MongoDB之Mongoose的使用

1、Mongoose簡介

Mongoose是在Node.js異步環境下對MongoDB進行便捷操做的對象模型工具。 實際開發中會選用相似mongoose的模塊來操做MongoDB數據庫以提高開發效率。mongodb

Mongoose三個重要概念:數據庫

  • Schema:一種以文件形式存儲的數據庫模型骨架,不具有數據庫的操做能力
  • Model:由Schema發佈生成的模型,具備抽象屬性和行爲的數據庫操做對
  • Entity:由Model建立的實體

(1)Schema簡述:

這是一種以文件形式存儲的數據庫模型骨架,沒法直接通往數據庫端,也就是說它不具有對數據庫的操做能力,僅僅只是數據庫模型在程序片斷中的一種表現,能夠說是數據屬性模型(傳統意義的表結構),又或者是集合的模型骨架。基本屬性類型有字符串、日期型、數值型、布爾型、null、數組、內嵌文檔等。 是Mongoose裏會用到的一種數據模式,能夠理解爲表結構的定義;每一個schema會映射到mongodb中的一個collection。 定義一個Schema:npm

var PersonSchema = new monoose.Schema({
   name:{type:String},
   age:{type:Number,default:0}  ,
   time:{type:Date,default:Date.now},
   email:{type:String,default:''}  
})
複製代碼

(2)Model簡述:

由Schema構造生成的模型,除了Schema定義的數據庫骨架之外,還具備數據庫操做的行爲,相似於管理數據屬性、行爲的類。數組

//建立模型,能夠用它來操做數據庫中的person集合,指的是總體。建立一個person集合
var PersonModel = db.model("person", PersonSchema);
複製代碼

person:數據庫中的集合名稱,當咱們對其添加數據時若是person已經存在,則會保存到其目錄下,若是未存在,則會建立person集合,而後再保存數據。有了model,也就有了操做數據的能力。 建立一個Model模型,須要指定兩點:1,集合名稱;2,集合的Schema結構對象。知足這兩點,就能夠操做數據庫啦。bash

(3)Entity簡述:

由Model建立的實體,使用save方法保存數據,Model和Entity都能影響數據庫的操做,但Model比Entity更具操做性。建立Entity成功後,Schema的屬性就變成了Model和Entity的公共屬性了。 使用Model建立Entity異步

//根據模型建立實體,是指的個體對象
var personEntity = new PersonModel({
    name : "zf",
    age  : 6,
    email: "zf@qq.com",
    home:'beijing'
});
複製代碼

Schema、Model、Entity的關係:Schema生成Model,Model創造Entity,Model和Entity均可對數據庫操做形成影響,但Model比Entity更具操做性。mongoose

關於ObjectId 主鍵,一種特殊並且很是重要的類型,每一個Schema都會默認配置這個屬性,屬性名爲_id,除非本身定義,方可覆蓋。工具

var mongoose = require('mongoose');
    var ObjectId = mongoose.Schema.Types.ObjectId;
    var StudentSchema = new Schema({}); //默認會有_id:ObjectId
    var TeacherSchema = new Schema({id:ObjectId});//只有id:ObjectId
複製代碼

Mongoose中的數據類型: • String • Number • Date • Boolean • Buffer • ObjectId • Mixed • Arrayui

2、Mongoose安裝

須要配置好Node.js環境和安裝好MongoDB數據庫,Node.js的配置可參考Node.js入門及安裝,以及MongoDB數據庫的入門MongoDB入門詳解spa

打開cmd,定位到項目根目錄,執行npm install mongoose --save命令。

安裝完成示例:

image.png

3、使用步驟

step1:建立數據庫鏈接
var mongoose = require('mongoose');    //引用mongoose模塊
    var db = mongoose.createConnection('localhost','test'); //建立一個數據庫鏈接
複製代碼
step2:能夠監測是否有異常
db.on('error',console.error.bind(console,'鏈接錯誤:'));
    db.once('open',function(){
      //一次打開記錄
    });
複製代碼

成功開啓數據庫後,就能夠執行數據庫相應操做

step3:定義一個Schema
var PersonSchema = new mongoose.Schema({
      name:String   //定義一個屬性name,類型爲String
    });
複製代碼
step4:將Schema發佈爲Model
var PersonModel = db.model('Person',PersonSchema); 
複製代碼
step5:用Model建立Entity
var personEntity = new PersonModel({name:'Krouky'});
    //打印這個實體的名字看看
    console.log(personEntity.name); //Krouky
複製代碼

Entity是具備具體的數據庫操做CRUD的

相關文章
相關標籤/搜索