## **1、mongoose 介绍**
Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具。Mongoose 是 NodeJS 的驱动,不能作为其他语言的驱动。
1. 通过关系型数据库的思想来设计非关系型数据库
2. 基于 mongodb 驱动,简化操作
## **2、mongoose 的安装以及使用**
官网:https://mongoosejs.com/
#### 1. 安装
`npm i mongoose --save `
#### 2、引入 mongoose 并连接数据库
```
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
如果有账户密码需要采用下面的连接方式:
mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms');
```
#### 3、定义 Schema
数据库中的 Schema,为数据库对象的集合。schema 是 mongoose 里会用到的一种数据模式, 可以理解为表结构的定义;每个 schema 会映射到 mongodb 中的一个 collection,它不具备 操作数据库的能力
```
var UserSchema=mongoose.Schema({ name: String, age:Number, status:'number' })
```
#### 4、创建数据模型
定义好了 Schema,接下就是生成 Model。model 是由 schema 生成的模型,可以对数据库的 操作。
**注意**:mongoose.model 里面可以传入两个参数也可以传入三个参数
mongoose.model(参数 1:模型名称(首字母大写),参数 2:Schema,参数 3:数据库集合名 称)
**如果传入 2 个参数的话**:这个模型会和模型名称相同的复数的数据库建立连接:如通过下面 方法创建模型,那么这个模型将会操作 users 这个集合。
**如果传入 3 个参数的话**:模型默认操作第三个参数定义的集合名称
```
var User=mongoose.model('User', UserSchema);
```
#### 5、查找数据
```
User.find({},function(err,docs){
if(err){
console.log(err);
return;
}
console.log(docs);
})
```
#### 6、增加数据
```
var u=new User({ //实例化模型 传入增加的数据
name:'lisi2222333',
age:20, status:true
})
u.save();
```
#### 7、修改数据
```
User.updateOne(
{ name: 'lisi2222' },
{ name: '哈哈哈' },
function(err, res) {
if(err){
console.log(err);
return;
}
console.log('成功')
}
);
```
#### 8、删除数据
```
User.deleteOne({ _id: '5b72ada84e284f0acc8d318a' }, function (err) {
if (err) {
console.log(err);
return;
}
// deleted at most one tank document
console.log('成功');
});
```
#### 9、保存成功查找
```
var u=new User({
name:'lisi2222333',
age:20, status:true //类型转换
})
u.save(function(err,docs){
if(err){
console.log(err);
return;
}
// console.log(docs);
User.find({},function(err,docs){
if(err){
console.log(err);
return;
}
console.log(docs);
})
});
```
## **三、mongoose 模块化**
看教程演示
- 前言
- 一、MongoDb 数据库介绍、安装、使用
- 二、MongoDB 数据库创建删除、表(集合) 创建删除、数据增删改查
- 三、MongoDB 索引 和 explain 的使用
- 四、Nodejs 操作 MongoDb 数据库
- 五、关系型数据库表(集合)与表(集合)之 间的几种关系
- 六、MongoDB 的高级查询 aggregate 聚合管道
- 七、mongoose 入门以及 mongoose 实现数据 的增、删、改、查
- 八、Mongoose 预定义模式修饰符 Getters 与 Setters 自定义修饰符
- 九、Mongoose 索引、Mongoose 内置 CURD 方 法、扩展 Mongoose Model 的静态方法和 实例方法
- 十、Mongoose 数据校验
- 十一、Mongoose 中使用 aggregate 聚合管道
- 十二、Mongoose 中使用 populate 实现关联查询
- 十三、MongoDb 数据库的导出导入