MongoDB(二)

视频链接:https://www.bilibili.com/video/BV18s411E78K/?spm_id_from=333.337.search-card.all.click&vd_source=9545770e4a2968c05878ffac8589ec6c
视频选集:P13— P19

1._sort和投影

//查询文档时,默认惰况是按照_id的值进行排列(升序)
db.emp.find({ });

// sort()可以用来指定文档的排序的规则
// sort()需要传递一个对象来指定排序规则 1是升序,-1是降序
db.emp.find({ }).sort ();
比如:db.emp.find({}).sort({sal:1});

//sort()还可以多个条件排序
比如:db.emp.find({}).sort({sal:1,empno:-1});

// limit skip sort 可以以任意的顺序进行调用

//在查询时,可以在第二个参数的位置来设置查询结果的 投影【1表示显示,0表示不显示】
db.emp.find({},{ename:1,_id:0});

2.mongoose简介

  • 之前我们都是通过shell来完成对数据库的各种操作的,在开发中大部分时候我们都需要通过程序来完成对数据库的操作。
  • 而Mongoose就是一个让我们可以通过Node来操作MongoDB的模块。
  • Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进─步的优化封装,并提供了更多的功能。
  • 在大多数情况下,它被用来把结构化的模式应用到一个MongoDB集合,并提供了验证和类型转换等好处

2.1 mongoose的好处

  • 可以为文档创建一个模式结构( Schema )
  • 可以对模型中的对象/又档进行验证
  • 数据可以通过类型转换转换为对象模型
  • 可以使用中间件来应用业务逻辑挂钩
  • 比Node原生的MongoDB驱动更容易

2.2 新的对象

mongoose中为我们提供了几个新的对象

  • Schema(模式对象)
    .Schema对象定义约束了数据库中的文档结构
  • Model
    Model对象作为集合中的所有文档的表示,相当于MongoDB数据库中的集合collection
  • Document
    Document表示集合中的具体文档,相当于集合中的一个具体的文档

注意:先创建Schema,再创建Model,最后创建Document

2.3 步骤描述

1.先下载安装mongoose
在这里插入图片描述
2.在项目中引入mongoose
var mongoose = require("mongoose ");
3.连接MongoDB数据库
mongoose.connection( ‘mongodb://数据库的ip地址:端口号/数据库名’,{useMongoClient:true})
注意:如果端口号是默认端口号(27017)则可以省略不写
4.断开数据库连接(一般不需要)
MongoDB数据库,一般情况下,只需要连接一次,连接一次以后,除非项目停止服务器关闭,否则连接一般不会断开
mongoose.disconnect ( )

非必要步骤:监听MongoDB数据库的连接状态
在mongoose对象中,有一个属性叫做connection,该对象表示的就是数据库连接通过监视该对象的状态,可以来监听数据库的连接与断开
mongoose.connection.once (“open” ,function (){});//数据库连接成功的事件
mongoose.connection.once (“close”, function (){});//数据库断开的事件

2.4 具体步骤代码实现

引入+连接数据库
在这里插入图片描述

3.Schema和Model

mongoose官网:mongoosejs.com
先进行数据库的连接
在这里插入图片描述

3.1 创建Schema

在这里插入图片描述

3.2 创建Model

在这里插入图片描述
注意:mongoose会自动将集合名字变为复数,比如student变为students

3.3 插入文档

在这里插入图片描述
展示:
在这里插入图片描述

4.Model的方法

有了Model,就可以来对数据库进行增删改查的操作

4.1 Model.create

在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述
arguments参数:

在这里插入图片描述

4.2 Model.find && Model.findById && Model.findOne

4.2.1 Model.find

通过find()查询的结果,返回的对象,就是Document,文档对象【Document对象是Model的实例】
在这里插入图片描述
查找

在这里插入图片描述
注意:无论是否查到,都会返回一个数组【没查到就返回一个空数组】

projection传值情况:

在这里插入图片描述
还可以写成字符串:

在这里插入图片描述
注意:
在这里插入图片描述

options传值情况:

在这里插入图片描述

检查doc是否是集合的实例:

在这里插入图片描述

4.2.2 Model.findOne

查询符合条件的第一个文档,总会返回一个具体的文档对象
在这里插入图片描述

4.2.3 Model.findById

在这里插入图片描述

4.3 Model.update

在这里插入图片描述

在这里插入图片描述
Model.replaceOne和上面的一样的

4.4 Model.remove && Model.deleteOne && Model.deleteMany

在这里插入图片描述

4.5 Model.count

在这里插入图片描述

5.Document的方法

Document和集合中的文档一一对应,Document是Model的实例,通过Model查询到结果都是Document

单独创建一个document:

在这里插入图片描述

插入数据库:

在这里插入图片描述
展示:

在这里插入图片描述

5.1 update

在这里插入图片描述更直接的改法:

在这里插入图片描述

5.2 remove

在这里插入图片描述

5.3 get、set、id

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.4 toObject

将Document对象转换为一个普通的JS对象【转换为普通的js对象以后,注意所有的Document对象的方法或属性都不能使用了】

在这里插入图片描述
想删除文档中的属性,必须先转为JS对象才能删除:

在这里插入图片描述

6.mongoose的模块化

连接数据库操作只需要一次就行,所以定义模块来进行连接
在这里插入图片描述
再定义一个模块:

在这里插入图片描述

再定义一个文件,直接调用上面的模块:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值