Mongoose
1. Mongoose
Mongoose
是一个基于 Node.js
的 ODM
(对象文档映射)库,它为 MongoDB
提供了一个结构化的解决方案来定义数据模型,并通过模式(Schema
)验证数据。
相对于Mongo Shell
(命令行工具)而言:
Mongoose
简化开发流程,提供了许多高级功能,如预/后钩子(pre/post hooks
)、虚拟字段(virtual fields
)、中间件(middleware
)等,可以简化应用程序的开发过程。
集成到应用逻辑中,由于它是作为 npm
包提供的,所以可以直接集成到Node.js
应用程序中,使开发者能够在应用程序层面上处理 MongoDB 数据库操作。
对于Mongo Shell
:
Mongo Shell
直接操作数据库,通过CMD启动Mongosh
,Mongo Shell
是一个交互式的 JavaScript
环境,允许你直接对 MongoDB
数据库执行命令。它非常适合用来进行数据库管理、测试查询语句以及执行各种数据库操作。对于初学者来说,使用Mongo Shell
可以更直观地了解 MongoDB
的工作原理,包括数据模型设计还有查询优化等等。
1.1 Mongoose操作
// 1. 安装mongoose
// 2. 导入mongoose
const mongoose = require('mongoose');
// 3. 连接数据库服务
// 连接方法 协议名称 ip地址 要操作的数据库名称(后续操作的数据库)
mongoose.connect('mongodb://127.0.0.1:27017/bilbil');
// 4. 设置回调
// 成功回调
mongoose.connection.once('open', () => {
console.log('连接成功');
})
// 错误回调
mongoose.connection.on('error', () => {
console.log('连接失败');
})
// 关闭回调
mongoose.connection.on('close', () => {
console.log('连接关闭');
})
1.1.1 新增
// 1. 安装mongoose
// 2. 导入mongoose
const mongoose = require('mongoose');
// 3. 连接数据库服务
// 连接方法 协议名称 ip地址 要操作的数据库名称(后续操作的数据库)
mongoose.connect('mongodb://127.0.0.1:27017/bilbil');
// 4. 设置回调
// 成功回调
mongoose.connection.once('open', () => {
console.log('连接成功');
// 5. 创建文档的结构对象
// Schema可以理解是【模式】的意思,也就是创建一个文档对象,约束文档属性和属性值
let BookSchema = new mongoose.Schema({
name: String,
author: String,
price: Number,
is_hot: Boolean,
tags: Array,
pub_time: Date,
// Buffer Buffer对象
// Mixed 可以理解成Any
// ObjectId 联合查询使用,
// Decimal128 高精度类型
});
// 6. 创建模型对象 模型对象:对文档操作的封装对象
// BookModel可以对指定文档进行增删改查
// model是一个方法 books是集合名称 BookSchem是结构对象
let BookModel = mongoose.model('books', BookSchema);
// 7. 新增
// BookModel.create({
// name: '西游记',
// author: '吴承恩',
// price: 19.9
// }, (err, data) => {
// // 形参1
// if (err) {
// console.log('报错', err);
// return;
// };
// // 形参2
// // data 插入成功后的文档对象
// console.log(data);
// });
// 7.1 create的回调方法被弃用了
BookModel.create({ name: '西游记', author: '吴承恩', price: 19.