## **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 數據庫的導出導入