【Mongoose】使用方法介绍

目录

5.1 介绍

5.2 作用

5.3 使用流程

5.4 字段类型

5.5 字段值验证

5.6 数据库的增删改查

5.6.1 增加

5.6.2 删除

5.6.3 更新

5.7 条件控制

5.7.1 运算符

5.7.2 逻辑运算

5.7.3 正则匹配

5.8 个性化读取

5.8.1 字段筛选

5.8.2 数据排序

5.8.3 数据截取


5.1 介绍

Mongoose 是一个对象文档模型库,官网 http://www.mongoosejs.net/

5.2 作用

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

5.3 使用流程

//1. 安装 mongoose
//2. 导入 mongoose
const mongoose = require('mongoose');
//3. 连接数据库
mongoose.connect('mongodb://127.0.0.1:27017/bilibili');
//4. 设置连接回调
//连接成功
mongoose.connection.on('open', () => {
console.log('连接成功');
//5. 创建文档结构对象
let BookSchema = new mongoose.Schema({
title: String,
author: String,
price: Number
});
//6. 创建文档模型对象
let BookModel = mongoose.model('book', BookSchema);
//7. 插入文档
BookModel.create({
title: '西游记',
author: '吴承恩',
price: 19.9
}, (err, data) => {
if (err) throw err;

//输出 data 对象
console.log(data);
//8. 断开连接
mongoose.disconnect();
});
});
//连接出错
mongoose.connection.on('error', () => {
console.log('连接出错~~');
})
//连接关闭
mongoose.connection.on('close', () => {
console.log('连接关闭');
})

5.4 字段类型

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

5.5 字段值验证

Mongoose 有一些内建验证器,可以对字段值进行验证
//必填项
title: {
type: String,
required: true // 设置必填项
},

//默认值
author: {
type: String,
default: '匿名' //默认值
},

//枚举值
gender: {
type: String,
enum: ['男','女'] //设置的值必须是数组中的
},

 //唯一值
username: {
type: String,
unique: true
},

5.6 数据库的增删改查

数据库的基本操作包括四个,增加( create ),删除( delete ),修改( update ),查( read

5.6.1 增加

插入一条
SongModel.create({
title:'给我一首歌的时间',
author: 'Jay'
}, function(err, data){
//错误
console.log(err);
//插入后的数据对象
console.log(data);
});
批量插入
//1.引入mongoose
const mongoose = require('mongoose');
//2.链接mongodb数据库 connect 连接
mongoose.connect('mongodb://127.0.0.1:27017/project');
//3.设置连接的回调
mongoose.connection.on('open',()=>{
//4.声明文档结构
const PhoneSchema = new mongoose.Schema({
brand:String,
color:String,
price:Number,
tags:Array
})
//6.创建模型对象
const PhoneModel = mongoose.model('phone',PhoneSchema);
PhoneModel.insertMany([
{
brand:'华为',
color:'灰色',
price:2399,
tags:['电量大','屏幕大','信号好']
},
{
brand:'小米',
color:'白色',
price:2099,
tags:['电量大','屏幕大','信号好']
}
],(err,data)=>{
if(err) throw err;
console.log('写入成功');
mongoose.connection.close();
})
})

5.6.2 删除

删除一条数据
SongModel.deleteOne({_id:'5dd65f32be6401035cb5b1ed'}, function(err){
if(err) throw err;
console.log('删除成功');
mongoose.connection.close();
});
批量删除
SongModel.deleteMany({author:'Jay'}, function(err){
if(err) throw err;
console.log('删除成功');
mongoose.connection.close();
});

5.6.3 更新

更新一条数据
SongModel.updateOne({author: 'JJ Lin'}, {author: '林俊杰'}, function (err) {
if(err) throw err;
mongoose.connection.close();
});
批量更新数据
SongModel.updateMany({author: 'Leehom Wang'}, {author: '王力宏'}, function (err) {
if(err) throw err;
mongoose.connection.close();
});
5.6.4 查询
查询一条数据
SongModel.findOne({author: '王力宏'}, function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
//根据 id 查询数据
SongModel.findById('5dd662b5381fc316b44ce167',function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
批量查询数据
//不加条件查询
SongModel.find(function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});
//加条件查询
SongModel.find({author: '王力宏'}, function(err, data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});

5.7 条件控制

5.7.1 运算符

mongodb 不能 > < >= <= !== 等运算符,需要使用替代符号
  • > 使用 $gt
  • < 使用 $lt
  • >= 使用 $gte
  • <= 使用 $lte
  • !== 使用 $ne
db.students.find({id:{$gt:3}}); id号比3大的所有的记录

5.7.2 逻辑运算

$or 逻辑或的情况
db.students.find({$or:[{age:18},{age:24}]});
$and 逻辑与的情况
db.students.find({$and: [{age: {$lt:20}}, {age: {$gt: 15}}]});

5.7.3 正则匹配

条件中可以直接使用 JS 的正则语法,通过正则可以进行模糊查询
db.students.find({name:/imissyou/});

5.8 个性化读取

5.8.1 字段筛选

//0:不要的字段
//1:要的字段
SongModel.find().select({_id:0,title:1}).exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});

5.8.2 数据排序

//sort 排序
//1:升序
//-1:倒序
SongModel.find().sort({hot:1}).exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});

5.8.3 数据截取

//skip 跳过 limit 限定
SongModel.find().skip(10).limit(10).exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});

  • 14
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mongoose是一个在Node.js中操作MongoDB数据库的对象模型工具。它提供了一种简单而优雅的方式来定义和操作MongoDB中的文档。 Mongoose官方文档提供了详细的指南和API参考,帮助开发者了解和使用Mongoose。以下是Mongoose官方文档的主要内容: 1. 安装和配置:介绍了如何安装Mongoose以及配置连接MongoDB数据库的方法。 2. 模型定义:讲解了如何使用Mongoose定义模型,包括定义模式(Schema)和模型(Model)。 3. CRUD操作:介绍了如何使用Mongoose进行增删改查操作,包括创建文档、查询文档、更新文档和删除文档。 4. 查询和过滤:详细介绍Mongoose中的查询方法和过滤器,包括条件查询、排序、分页等。 5. 中间件:讲解了Mongoose中的中间件概念和使用方法,包括前置中间件、后置中间件和错误处理中间件。 6. 钩子函数:介绍Mongoose中的钩子函数,可以在保存、更新等操作前后执行一些逻辑。 7. 数据验证:讲解了如何使用Mongoose进行数据验证,包括内置验证器和自定义验证器。 8. 引用和关联:详细介绍Mongoose中的引用和关联概念,可以在不同集合之间建立关系。 9. 聚合查询:介绍Mongoose中的聚合查询功能,可以进行复杂的数据聚合操作。 10. 插件:讲解了如何使用Mongoose插件扩展功能,以及一些常用的插件示例。 以上是Mongoose官方文档的主要内容,你可以通过访问Mongoose官方网站来获取更详细的信息和示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值