MongoDB之Mongoose的使用
一、Mongoose简介
Mongoose是在Node.js异步环境下对MongoDB进行便捷操作的对象模型工具。
实际开发中会选用类似mongoose的模块来操作MongoDB数据库以提升开发效率。
Mongoose三个重要概念:
- Schema:一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
- Model:由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
- Entity:由Model创建的实体
(1)Schema简述:
这是一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力,仅仅只是数据库模型在程序片段中的一种表现,可以说是数据属性模型(传统意义的表结构),又或者是集合的模型骨架。基本属性类型有字符串、日期型、数值型、布尔型、null、数组、内嵌文档等。
是Mongoose里会用到的一种数据模式,可以理解为表结构的定义;每个schema会映射到mongodb中的一个collection。
定义一个Schema:
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结构对象。满足这两点,就可以操作数据库啦。
(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更具操作性。
关于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
• Array
二、Mongoose安装
需要配置好Node.js环境和安装好MongoDB数据库,Node.js的配置可参考Node.js入门及安装,以及MongoDB数据库的入门MongoDB入门详解
打开cmd,定位到项目根目录,执行npm install mongoose --save
命令。
安装完成示例:
image.png
三、使用步骤
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的