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的

相关文章
相关标签/搜索