mangoose基础和常用操作
什么是mongoose?
- mangoose是node中的一个模块,属于MVC中的M,是MongoDB的模型工具。
- mongoose 是个 odm。odm 的概念对应 sql 中的 orm。orm 全称是 Object-Relational Mapping,对象关系映射;而 odm 是 Object-Document Mapping,对象文档映射。
- 它的作用就是,在程序代码中,定义一下数据库中的数据格式,然后取数据时通过它们,可以把数据库中的 document 映射成程序中的一个对象,这个对象有 .save .update 等一系列方法,和 .title .author 等一系列属性。在调用这些方法时,odm 会根据你调用时所用的条件,自动转换成相应的 mongodb shell 语句帮你发送出去。自然地,在程序中链式调用一个个的方法要比手写数据库操作语句具有更大的灵活性和便利性。
mangoose中的概念
- Schema(模式,概要):以文件形式储存的数据库模型骨架,没有对数据的操作能力
- Model(模型):由Schema创建生成的模型,可以对数据库进行操作
- Entity(实体):由model创建的实体,其操作也会影响数据库
- Schema、Model、Entity的关系,Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。
- 用命名方式来区别不同对象:
var PersonSchema; //Person的文本属性
var PersonModel; //Person的数据库模型
var PersonEntity; //Person实体
基本操作
- 连接MongoDB数据库
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test',callback)
// mongodb 是 protocol scheme 的名称;localhost 是 mongod 所在的地址;
// 端口号省略则默认连接 27017;test 是数据库的名称,mongodb 中不需要建立数据库,当你需要连接的数据库不存在时,会自动创建一个出来。
- 定义一个Schema
var PersonSchema = new mongoose.Schema({
name:String //定义一个属性name,类型为String
});
3.将该Schema发布为Model
var PersonModel = mongoose.model('Person',PersonSchema);
4.用Model创建Entity
var personEntity = new PersonModel();
personEntity.name = 'Krouky'
console.log(personEntity.name); //Krouky
5. Entity对数据库进行操作
personEntity.save(); //保存实体到数据库中
PersonModel.find(function(err,persons){
//查询到的所有person
});
PersonModel.find({'name':'XXX'},function(err,persons){
//查询到的name为XXX的person
});
PersonModel.findById({'id'},function(err,persons){
//查询到改id的person
});
PersonModel.update({key:value},function(err,update){
if(err) return err;
console.log('update')
})