node教程(四)Mongodb+mongoose

文章目录

一、mongodb

1.简介

1.1Mongodb是什么?

Mongodb是一个基于分布式文件存储的数据库

1.2数据库是什么?

数据库是按照数据结构来组织、存储和管理数据的应用程序。

1.3数据库的作用

主要作用就是管理数据,对数据进行增删改查

1.4数据库管理数据的特点

相比于纯文件,数据库管理数据具有如下特点:

1.速度更快

2.拓展性更强

3.安全性更强

2.核心概念

2.核心概念

Mongodb中有三个重要概念

  • 数据库是一个数据仓库,数据库服务下可以创建很多数据库,数据库中可以存放很多集合
  • 集合:集合类似于JS中的数组,在集合中可以存放很多文档
  • 文档:文档是数据库中的最小单位,类似于JS中的对象

3.下载安装与启动

https://www.mongodb.com/try/download/community

千万不要选中服务端窗口的内容,选中会停止服务,可以敲回车取消选中

4.命令行交互

4.1数据库命令

1.显示所有的数据库

powershell 复制代码
show dbs

2.切换到指定的数据库,如果数据库不存在则会自动创建数据库

powershell 复制代码
use 数据库名

3.显示当前所在数据库

powershell 复制代码
db

4.删除当前数据库

powershell 复制代码
use 库名
db.dropDatabase()

4.2集合命令

1.创建集合

powershell 复制代码
db.createCollection('集合名称')

2.显示当前数据库中的所有集合

powershell 复制代码
show collections

3.删除某个集合

powershell 复制代码
db.集合名.drop()

4.重命名集合

powershell 复制代码
db.集合名.renameCollection('new name')

4.3文档命令

1.插入文档

powershell 复制代码
db.集合名.insert('文档对象')

2.查询文档

powershell 复制代码
db.集合名.find(查询条件)

_id是mongodb自动生成的唯一编号,用来唯一标识文档

3.更新文档

powershell 复制代码
db.集合名.update(查询条件,新的文档)
db.集合名.update({name:'张三'},{$set:{age:19}})

4.删除文档

powershell 复制代码
db.集合名.remove(查询条件)

二、Mongoose

1.介绍

是一个对象文档模型库

2.作用

方便使用代码操作mongodb数据库

3.使用流程

javascript 复制代码
// 安装mongoose
// 导入mongoose
const mongoose = require('mongoose');

// 连接mongodb服务                      数据库的名称
mongoose.connect('mongodb://127.0.0.1:27017/abc')

/* 设置回调 */
mongoose.connection.on('open',() => {
    console.log('连接成功');
}); // 设置连接成功的回调
mongoose.connection.on('error',() => {
    console.log('连接失败');
}); //连接失败的回调
mongoose.connection.on('close',() => {
    console.log('连接关闭');
}); //设置连接关闭的回调

// 关闭mongodb的连接
setTimeout(() => {
    mongoose.disconnect();
},2000)

4.插入文档

出现以下问题

powershell 复制代码
 throw new MongooseError('Model.create() no longer accepts a callback');

是由于mongoose版本太高,可以手动降级

powershell 复制代码
npm i mongoose@6.8.0
javascript 复制代码
// 安装mongoose
// 导入mongoose
const mongoose = require('mongoose');

// 连接mongodb服务                      数据库的名称
mongoose.connect('mongodb://127.0.0.1:27017/abc')

/* 设置回调 */
mongoose.connection.once('open',() => {
    // console.log('连接成功');
    // 5.创建文档的结构对象
    // 设置集合中文档的属性以及属性值的类型
    let BookSchema = new mongoose.Schema({
        name:String,
        author: String,
        price: Number
    });

    // 创建模型对象  对文档操作的封装对象
    let BookModel = mongoose.model('books',BookSchema);

    // 新增
    BookModel.create({
        name:'xiyouji',
        author:'吴承恩',
        price:19.9
    },(err,data) => {
        if(err){
            console.log(err);
            return;
        }
        // 如果没有出错,则输出插入后的文档对象
        console.log(data);
        // 关闭数据库连接(项目运行过程中不会添加此代码)
        mongoose.disconnect();
    });

}); // 设置连接成功的回调

mongoose.connection.on('error',() => {
    console.log('连接失败');
}); //连接失败的回调
mongoose.connection.on('close',() => {
    console.log('连接关闭');
}); //设置连接关闭的回调

5.mongoose字段类型

文档结构可选的常用字段类型列表

javascript 复制代码
// 安装mongoose
// 导入mongoose
const { Mixed } = require('mongoose');
const mongoose = require('mongoose');

// 连接mongodb服务                      数据库的名称
mongoose.connect('mongodb://127.0.0.1:27017/abc')

/* 设置回调 */
mongoose.connection.once('open',() => {
    // console.log('连接成功');
    // 5.创建文档的结构对象
    // 设置集合中文档的属性以及属性值的类型
    let BookSchema = new mongoose.Schema({
        name:String,
        author: String,
        price: Number,
        is_hot:Boolean,
        tags:Array,
        pub_time:Date,
        test:mongoose.Schema.Types.Mixed 
    });

    // 创建模型对象  对文档操作的封装对象
    let BookModel = mongoose.model('books',BookSchema);

    // 新增
    BookModel.create({
        name:'xiyouji',
        author:'吴承恩',
        price:19.9,
        is_hot:true,
        tags:['鬼怪','励志'],
        pub_time:new Date(),
        test:'abc'
    },(err,data) => {
        if(err){
            console.log(err);
            return;
        }
        // 如果没有出错,则输出插入后的文档对象
        console.log(data);
        // 关闭数据库连接(项目运行过程中不会添加此代码)
        mongoose.disconnect();
    });

}); // 设置连接成功的回调

mongoose.connection.on('error',() => {
    console.log('连接失败');
}); //连接失败的回调
mongoose.connection.on('close',() => {
    console.log('连接关闭');
}); //设置连接关闭的回调
相关推荐
TDengine (老段)1 小时前
TDengine 压缩编码机制 — 双层压缩架构与类型特化算法
大数据·数据库·物联网·算法·时序数据库·tdengine·涛思数据
苏渡苇2 小时前
Redis 持久化——RDB 快照 vs AOF 日志
数据库·redis·缓存·redis持久化·aof vs rdb
l1t3 小时前
DeepSeek总结的使用 PEG 实现运行时可扩展的 SQL 解析器
数据库·sql
这个DBA有点耶3 小时前
COUNT进阶(续):超大表去重计数的极致优化
数据库·架构·代码规范
爱喝水的鱼丶3 小时前
SAP-ABAP:SAP 简单报表输出开发系列(共6篇) 第四篇:SAP 报表异常处理机制:数据校验与消息提示规范落地
开发语言·数据库·学习·算法·sap·abap
_1_73 小时前
SQL SERVER闪退问题解决
数据库·sqlserver
ZengLiangYi3 小时前
sql.js WASM 深度解析
javascript·数据库·后端
一 乐3 小时前
人口老龄化社区服务与管理平台|基于springboot+vue的人口老龄化社区服务与管理平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·人口老龄化社区服务与管理平台
梓䈑3 小时前
【MySQL】表的操作(数据表的创建、查看 和 修改)
数据库·mysql
小碗羊肉4 小时前
【Redis | 第六篇】Redisson
数据库·redis·缓存