传送门
SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口
一、概念
1、概念
MongoDB是一种开源的非关系型数据库,使用JSON样式的文档进行数据存储。它是一个面向文档的数据库,文档是由键值对组成的,类似于JSON格式的数据。MongoDB将数据存储在灵活的文档集合中,这意味着每个文档可以有不同的结构。它支持动态查询,索引和高度可伸缩的部署,可在大型数据集上提供高性能。MongoDB还具有分布式的特性,可以在多个服务器上进行数据存储和访问。由于其灵活性和可伸缩性,MongoDB被广泛用于开发Web应用程序、大数据分析、物联网和许多其他领域。
二级制json就是BSON,可以认为json的加强版,可以存二进制。我们使用的时候当成json就可以了。MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB数据库中的常用述语:
1、在MongoDB中,数据库是以文件形式存储的,数据库目录中存储了相应的数据库!
2、在MongoDB中,把传统数据库中的 “表” 叫作:Collections “集合”!
3、在MongoDB中,向集合存储数据时,直接以JSON格式,进行存取操作!
4、在MongoDB中,集合中的数据叫作:Documents “文档”!
MongoDB 可在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 可为Web应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储在灵活的json文档中,这意味着可以直接得到从文档到文档的数据、结构等。
MongoDB 是免费使用的(MongoDB分 社区版[在所有环境下都免费] 和 企业版[在开发环境免费,生产环境收费]两个版本)。
MongoDB 数据库具有可伸缩性和灵活性,可帮助你快速查询和索引你需要数据。
https://www.mongodb.com/ 主官网
注意:偶数版本为稳定版,例如3.2这种也是稳定版,并不是看大版本。
https://www.mongodb.com/try/download/community 下载地址
参考文章:
精品文章:https://blog.csdn.net/muguli2008/article/details/80591256
他人尚硅谷学习文章:https://blog.csdn.net/lyyrhf/article/details/115469161
2、安装
https://www.mongodb.com/try/download/community
MongoDB的安装非常简单,在下载完成后,接直接双击下载好的MongoDB安装包,进入MongoDB安装界面,点击Next下一步、同意条款、选择安装路径 和 日志路径、勾选是否安装MongoDB Compass(MongoDB数据库图形管理工具,类似MySQL的Navicat ),其它的步骤一直点下一步直到完成安装就OK啦。
然后就一直下一步、Next 直到 Flnish 安装完毕,到此就MongoDB就安装结束啦! 肯定勾上。
3、图形化界面单独安装(额外扩展,默认有了)
https://www.mongodb.com/try/download/compass
注意事项:在MongoDB Compass选择下载时,可选择对应的系统版本(这里以windows系统为例):
zip绿色版(免安装,解压后就可以用)
msi安装版(Windows Installer的数据包,需要一步步安装到本地)
exe安装版(可执行文件,需要一步步安装到本地)
MongoDB数据库的图形化的数据库管理工具,可以在这里面对数据进行很友好的操作:如查看、编辑、导入、导出等相应的。
4、运行
在命令窗口中,输入 mongo 回车, 就进入了MongoDB数据库的语法环境了!
注:安装好MongoDB数据库后,默认是【非授权模式】(也就是不需要任何权限验证,直接在命令窗口中输入 mongo 回车,就连接上了)。
MongoDB默认IP 和 端口是:mongodb://127.0.0.1:27017 或 mongodb://localhost:27017
配置MongoDB全局环境变量(就是在电脑中任何地方都可以合用mongo、mongod等命令)!注:配置完成后,重启电脑, 环境变量才生效哦!重启后,我们就能在系统的任何位置,使用mongo命令了:(实际测试中不用重启电脑,所以文章和学习一定要自己实操。)
查看MongoDB数据库存的版本:
mongod -version
// 该命令会显示MongoDB数据库的相关信息,如果能显示信息,就表示已安装成功了!!!
没有重启
输入mongo直接进入命令行模式了
不用手动创建数据库和集合(表),use xxx直接就到了xxx数据库了,只有插入文档(数据),就能显式查看数据
插入
刷新一下就有了
同上,刷新一下就有了
二、语法
1、插入
可以自己指定_id,但是也是需要唯一,所以建议用默认的
Many那个里面哪怕插入一个,也必须是数组。
2、查询
3、更新
根据查询条件修改整个join,新json是什么,就是第二个参数。
update默认只改一个,加上上面的属性才改多个(这是个坑)
4、删除
5、分页
6、排序
sort和投影
find()查询文档时,默认情况是按照_id的值进行升序排列
sort()可以用来指定文档的排序的规则,需要传递一个属性来指定排序规则,1表示升序,-1表示降序
db.users.find({}).sort({sale:1})
db.users.find({}).sort({sale:1,qq:1}) //先指定sale的升序 再qq的降序
limit、skip、sort可以任意顺序的调用
查询时,我们可以在第二个参数的位置来设置查询结果的投影
db.users.find({},{sale:1})
7、综合练习
//添加两万条数据的性能高,尽量少调用系统的方法
var arr=[];
for(var i=1;i<=20000;i++){
arr.push({num:i});
}
db.user.insert(arr);
//查询numbers中num大于5000的文档
db.unmbers.find({num:{$gt:500}})
//查询numbers中num小于30的文档
db.unmbers.find({num:{$lt:500}})
//查询numbers中num大于40小于50的文档
db.numbers.find({num:{$gt:40,$lt:50}})
//查询numbers前10条的数据
db.numbers.find({num:{$lte:10}})
//limit()设置显示数据的上限
db.numbers.find().limit(10)
//查询numbers中第11条到20条的数据
//skip()用于跳过指定数量的数据 skip( (页码-1)*每页显示的条数 ).limit(每页显示的条数)
//MongoDB会自动调整limit()和skip()的位置
db.numbers.find().skip(10).limit(10)
db.numbers.find().limit(10).skip(10)
三、mongoose
概念(前端使用)