mongodb——mongoose的基本使用

    Mongooose中,有三个比较重要的概念,分别是Schema、Model、Entity。它们的关系是:Schema生成Model,Model创造Document,Model和Document都可对数据库操作造成影响,但Model比Document更具操作性

    Schema用于定义数据库的结构。类似创建表时的数据定义(不仅仅可以定义文档的结构和属性,还可以定义文档的实例方法、静态模型方法、复合索引等),每个Schema会映射到mongodb中的一个collection

    Model是由Schema编译而成的构造器,具有抽象属性和行为,可以对数据库进行增删查改。Model的每一个实例(instance)就是一个文档document

    Document是由Model创建的实体,它的操作会影响数据库

数据库的连接

mongoose基于nodejs以及mongodb,所以需要先安装mongodb模块

npm install mongodb

1、然后使用npm安装mongoose模块

npm install mongoose

2、安装完成后使用require引入mongoose模块

const mongoose=require("mongoose");

3、使用connect()方法连接到MongoDB数据库,与mongodb不同的是,mongoose默认添加端口号(27017),并且在主机名后添加了数据库的名称

mongoose.connect('mongodb://localhost/person',function(err){
    if(err){
        console.log('连接失败');
    }else{
        console.log('连接成功');
    }
});

如果需要传递登陆用户名以及密码(鉴权控制),可以使用下面链接方式

//mongoose.connect('mongodb://username:password@host:port/database?options...');
mongoose.connect("mongodb://u1:123456@localhost/db1", function(err) {
    if(err){
        console.log('连接失败');
    }else{
        console.log('连接成功');
    }
});

4、与数据库断开连接——disconnect

mongoose.disconnect(function(){
        console.log("断开连接");
    })

Schema

5、Schema主要用于定义MongoDB中集合Collection里文档document的结构,使用Schema可以创建一个对象的构造函数,用来声明字段的类型

var PersonSchema = new mongoose.Schema({
    name:String,
    age:Number,
    ex:String
});

如果需要在Schema定义后添加其他字段,可以使用add()方法

var PersonSchema = new Schema;
PersonSchema .add({ name: 'string', color: 'string', price: 'number' });

在schema中设置timestamps为true,schema映射的文档document会自动添加createdAt和updatedAt这两个字段,代表创建时间和更新时间

var UserSchema = new Schema(
  {...},
  { timestamps: true }
);

Model

模型Model是根据Schema编译出的构造器,或者称为类,通过Model可以实例化出文档对象document

文档document的创建和检索都需要通过模型Model来处理

6、使用model()方法,将Schema编译为Model。model()方法的第一个参数是模型名称(一定要将model()方法的第一个参数和其返回值设置为相同的值,否则会出现不可预知的结果)第二个参数为模型名称,Mongoose会将集合名称设置为模型名称的小写版。如果名称的最后一个字符是字母,则会变成复数;如果名称的最后一个字符是数字,则不变;如果模型名称为"MyModel",则集合名称为"mymodels";如果模型名称为"Model1",则集合名称为"model1"

var Person = mongoose.model('Person', PersonSchema);

7、对原型Model1使用new方法,实例化出文档document对象

var zs = new Person({
    name:'zs',
    age:18,
    sex:'男'
});

8、通过new Model1()创建的文档doc1,必须通过save()方法,才能将创建的文档保存到数据库的集合中,集合名称为模型名称的小写复数版

zs.save(function (err,obj) {
    if (err) throw err;
    console.log(obj);
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值