MongoDB数据库的基本操作
admin
2024-03-01 11:53:06
0次

一、使用async/await对CRUD进行封装

1、定义dao层:数据库访问层。专门用于访问数据库,不和接口直接联系

2、定义service层:服务层。通过调用dao层的方法来获取数据,将结果通过res对象响应给客户端

3、路由接口:功能简化。只负责请求地址的路由

4、案例:模型的创建—->dao层定义—->service层定义—->路由文件的定义

​ (1)定义dao层:DataBase Option —- 数据库访问层(操作数据库)

​ a、定义模型:实现ORM映射。course(cid,cname,cgrade)

​ b、定义操作:通过模型对数据库进行访问

​ (2)定义服务层:

​ a、与客户端进行交互

​ b、通过dao层访问数据库

​ (3)接口:根据客户的请求路径,路由的对应的服务

二、MongoDB数据库

1、NoSQL数据库:非关系型数据库。数据的组织形式不是二维表格。即Not Only SQL,不能使用SQL语句操作数据。适合存储超大

规模、数据长度不确定的数据,数据没有规定的格式,不需要进行任何的设置就可以自由的横向扩展

2、什么是MongoDB:是用C++编写的,用于分布式系统的数据存储。存储数据的格式是 key : value

​ 数据库:database

​ 数据表(table) <—— > collection(集合)

​ 行(row) <———> document(文档)

3、MongoDB的数据类型:

​ ObjectId:类似唯一主键,长度为12个字节,通常用于生成文档的_id值

强调:在MongoDB中,每个文档都有一个 _id属性,若用户在创建文档时没有给出 _id ,MongDB会用ObjectId来为 _id生成一个,

_id的值是唯一的,用来唯一标识一个文档(一条记录)

4、MongoDB的基本操作

// 1.数据库的切换:use  数据库名
use my_test
// 2.创建集合:db.集合名.insert({_id:'1001'})  --- 在向集合中插入文档时就已经创建了集合
db.admin.insert({_id:'1005',userName: '鲁肃',password: '123456',address: '镇江'
})
db.student.insert({_id:'s101',sname: '张三',ssex: '男',sage: 21
})
// 3.查询集合:db.集合名.find({})  --- 若find不带参数表示查询所有文档
db.admin.find()
// 4. 统计集合中文档的数量 :db.集合名.find().count()
db.admin.find().count()
// 5.更新集合中的文档:db.集合名.update({条件},{$set:{key:value}})
db.admin.update({_id:'1004'},{$set:{password:'aaaa'}})
// 6. 删除属性(key):db.集合名.update({条件},{$unset:{key:value}}
db.admin.update({_id:'1003'},{$unset:{address:'南京'}})
// 7. 增加属性:db.集合名.update({条件},{$set:{key:value}}
db.admin.update({_id:'1003'},{$set:{hobby:['下棋','骑马','KTV']}})
// 8. 删除文档:db.集合名.remove({条件})
db.admin.remove({_id:'1005'})
db.student.find()
//9. 删除集合:db.集合名.drop()
db.student.drop()

5、MongoDB的查询

//创建一个数组:保存若干对象
var arr = []
for(let i=1;i<=2000;i++)
{arr.push({_id:'100'+i,title: 'A0'+i,num: i})
}
//将数组arr中的元素插入到集合numbers中
db.numbers.insert(arr)
db.numbers.find()
// 10. 查询numbers集合中num值等于500的文档(记录)
db.numbers.find({num:500})
// 11. 查询numbers集合中num值大于500的文档
db.numbers.find({num:{$gt:500}})
// 12. 查询numbers集合中num值小于500的文档
db.numbers.find({num:{$lt:500}})
// 13. 查询numbers集合中num值小于40,小于50的文档
db.numbers.find({num:{$gt:40,$lt:50}})
//14. 用limit设置显示数据的上限
db.numbers.find().limit(15)  //表示最多显示15条记录
//15. 分页显示:skip(index)---进行定位
db.numbers.find().skip(0).limit(10)  //从索引为0的记录开始连续显示10条记录
db.numbers.find().skip(10).limit(10)
db.numbers.find().skip(20).limit(10)

相关内容

热门资讯

总算了解开挂!众乐乐开挂AI攻... 总算了解开挂!众乐乐开挂AI攻略,众乐乐多功能都是存在有开挂攻略1、上手简单,内置详细流程视频教学,...
程序员教你辅助!英豪娱乐城辅助... 程序员教你辅助!英豪娱乐城辅助AI工具,英豪娱乐城多功能原来真的是有辅助工具暗藏猫腻,小编详细说明英...
盘点几款辅助!冰球突破辅助AI... 盘点几款辅助!冰球突破辅助AI插件,冰球突破多功能其实真的有辅助插件1、冰球突破脚本辅助下载、冰球突...
分享一款辅助器!建湖好运麻将辅... 分享一款辅助器!建湖好运麻将辅助器AI教程,建湖好运麻将多功能竟然真的是有辅助器教程1、在建湖好运麻...
每日必备透视挂!新老夫子透视挂... 每日必备透视挂!新老夫子透视挂AI技巧,新老夫子多功能原来真的有透视挂技巧1、新老夫子脚本辅助下载、...
分享认知作弊器!星际互联作弊器... 分享认知作弊器!星际互联作弊器AI方法,星际互联多功能都是存在有作弊器方法1、每一步都需要思考,不同...
玩家必备攻略作弊器!闲逸斗地主... 玩家必备攻略作弊器!闲逸斗地主作弊器AI方法,闲逸斗地主多功能果然是有作弊器方法1、闲逸斗地主透视辅...
分辨真假透视挂!宁波游戏大厅透... 分辨真假透视挂!宁波游戏大厅透视挂AI软件,宁波游戏大厅多功能一直是有透视挂软件1、让任何用户在无需...
每日必看教程透视挂!君悦来透视... 每日必看教程透视挂!君悦来透视挂AI工具,君悦来多功能本来是有透视挂工具1、上手简单,内置详细流程视...
发现一款外挂!半岛外挂AI工具... 发现一款外挂!半岛外挂AI工具,半岛多功能一贯真的有外挂工具1、起透看视 半岛辅助软件价格2、随意选...