什么是mongoose?

mongoose

mongoose 是一个操作 mongodb 的nodejs 驱动库。

什么驱动?

驱动是一个程序,其实就是提供了一套接口用来操作硬件。

mongodb 是数据库,nodejs 是js的一个运行环境,凭什么nodejs 可以操作 mongodb,所以这个时候就需要相应的驱动程序来提供接口。

mongoose安装
npm i mongoose

连接mongodb的代码:

const mongoose = require('mongoose'); // 引入 mongoose 依赖包
const dbURI = 'mongodb://localhost/f69'; // 配置要连接的数据库
// 调用 mongoose 所提供的 connect 方法来连接数据库
mongoose.connect(dbURI,{useNewUrlParser : true,useUnifiedTopology: true});
// 监听 connected 事件,连接成功的话就会触发这个事件
mongoose.connection.on('connected',function(){
    console.log(`数据库已经连接成功,连接至${dbURI}`);
})

书写Schema

Schema 是 mongoose 所提供的一个方法,用来定义mongodb 中所对应的数据集合的结构。
简单来说,就是定义数据的骨架

const usersSchema = new mongoose.Schema({
  username : String, // 用户名
  password : String, // 密码
  age : Number // 年龄
})

常见的 Schema Types 内置类型如下:

  • String 字符串
  • Number 数字
  • Boolean 布尔值
  • Array 数组
  • Buffer 缓冲区
  • Date 代表日期
  • ObjectId 对象ID
  • Mixed 混合

Node.js Buffer(缓冲区)

只有 Schema 里面对应的数据类型才能够被操作。

比如你在 Schema 里面定义的 age 为 Number 类型,但是在数据库里面你存的是 String,那么这个时候,你的查询结果里面就不会包含 age 字段。换句话说,我们在写 Schema的时候,定义类型需要和数据库里面的字段类型匹配上。

比如:
什么是mongoose?_第1张图片

书写 Model

Model 是由 Schema 生成的数据模型,我们就是通过这个模型来对数据进行操作的

语法如下:

mongoose.model(模型的名字,对应的Schema,Schema对应的集合);

require('./db');
const mongoose = require('mongoose');

// 定义 Schema,这是数据的骨架
const studentsSchema = new mongoose.Schema({
    name : String,
    gender : String,
    age : Number
})

// 生成 model
mongoose.model('studentsModel',studentsSchema,'students');
// 导出模型
module.exports = mongoose.model('studentsModel');

接下来书写dao文件,该文件负责具体的数据操作,代码如下:

// 这个文件做具体的数据操作,增删改查
// 引入之前定义的 model,因为增删改查操作都是基于那个 model
const studentModel = require('./studentModel');

// 查询
studentModel.find((err,data)=>{
    if(err) throw err;
    console.log(data);
});

新增数据

使用 create 方法方法可以新增一条数据。

studentModel.create({
    name : 'zhangsan',
    age : 18,
    gender : '男'
},(err,data)=>{
    if(err) throw err;
    console.log(data,'xx');
})

修改数据

studentModel.update({"name":"zhangsan"},{"name" : "张三"},(err,data)=>{
    if(err) throw err;
    console.log(data,'aaa');
})

删除数据

官方推荐 deleteOne 或者 deleteMany

studentModel.deleteOne({"name" : "张三"},(err,data)=>{
    if(err) throw err;
    console.log(data,'aaa');
})

条件查询

studentModel.find({"name" : "ii"},(err,data)=>{
    if(err) throw err;
    console.log(data,'aaa');
})

多个条件满足一个

studentModel.find({$or : [{},{},{}]})

你可能感兴趣的:(node.js)