1. Mongoose 介绍
Mongoose 是在 Node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具,Mongoose 是 NodeJS 的驱动,为NodeJS独有。
Mongoose 有两个特点
1. 通过关系型数据库的思想来设计非关系型数据库。
2. 基于 mongodb 数据库,但简化了操作。
官网: https://mongoosejs.com/
2. Mongoose 的安装
1. 安装Mongoose
代码语言:javascript复制npm i mongoose --save
2. 引入 Mongoose 连接数据库。
代码语言:javascript复制const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/database_name');
如果有账户密码需要采用下面的连接方式
代码语言:javascript复制mongoose.connect('mongodb://student_admin:123456@localhost:27017/database_name');
3. 定义 Schema
数据库中的 Schema,为数据库对象的集合,Schema 是 Mongoose 里使用的一种数据模式, 可以理解为表结构的定义,每个 Schema 会映射到 Mongodb 中的一个 Collection,它不具备操作数据库的能力。
代码语言:javascript复制var UserSchema = mongoose.Schema({
name: String,
age: Number,
status: Number,
})
4. 创建数据模型
数据模型 Model 是由 Schema 生成的模型,可以对数据库进行操作,定义模型可以传入两个参数也可以传入三个参数。
(1). 传两个参数格式如下:
mongoose.model(ModelName,Schema )
第一个参数ModeName为定义的模型名称,并且会和这个模型名称的复数集合所在的数据库建立连接,并操作这个集合,注意:模型名称首字母需要大写,第二个参数Schema为已定义好的Schema。
代码语言:javascript复制var User=mongoose.model('User', UserSchema);
如上面的定义的模型名称叫User,会操作所在数据库中的 users 这个集合。
(2). 传三个参数时格式如下:
var User=mongoose.model('User', UserSchema, Collection)
传入三个参数时,前两个参数意思一样,第三个参数为所要操作的集合名称。
代码语言:javascript复制var User=mongoose.model('User', UserSchema, student);
如上面的定义的模型名称叫User,会操作所在数据库中的 student 这个集合。
3. Mongoose 的常用操作
1. 查找数据
代码语言:javascript复制User.find({}, function (err, docs) {
if (err) {
console.log(err);
return;
}
console.log(docs);
})
2. 增加数据
代码语言:javascript复制// 实例化模型,传入增加的数据
var user = new User({
name: 'Lucy',
age: 20,
status: true
});
// 保存数据
user.save();
3. 修改数据
代码语言:javascript复制User.updateOne(
{ name: 'Lucy' },
{ name: 'Augus' },
function (err, res) {
if (err) {
console.log(err);
return;
}
console.log('修改成功')
});
4. 删除数据
代码语言:javascript复制// 传入的ID不用包装成ObjectID对象
User.deleteOne({ _id: '5b72ada84e284f0acc8d318a' },
function (err) {
if (err) {
console.log(err);
return;
}
console.log('成功');
});
5. 保存成功后查找
代码语言:javascript复制var user = new User({
name: 'Lucy',
age: 20,
status: true
})
user.save(function(err,docs){
if(err){
console.log(err);
return;
}
User.find({},function(err,docs){
if(err){
console.log(err);
return;
}
console.log(docs);
})
});