MongoDB 数据库
安装数据库
- 下载
下载地址:Download MongoDB Community Server | MongoDB
根据提示选择不同的版本、平台以及安装形式,在这里采取默认 即可。
点击绿色按钮 Download 即可下载。
文件较大,请耐心等待…
安装包信息:
文件大小: 482.433MB
下载耗时:5~8分钟(根据自己的情况而定)
- 安装
双击下载的文件:mongodb-windows-x86_64-6.0.7-signed.msi
选择自定义安装。
选择 D盘 ,建议。
默认即可,数据目录(Data Directory)和日志目录(Log Directory)记住。
剩下的,全部下一步(Next > )即可。
等待安装完毕!安装完后,会自动弹出 Compass (一个可视化数据库管理页面)。
基本命令
数据库的创建
切换数据库(如果没有,会在内存中创建一个新的数据库)
1 | use fly_articleDb; |
使用 db 查看当前数据库
1 | db |
删除当前数据库
1 | db.dropDatabase(); |
集合的相关操作
Collection 在数据库中的集合,里面可以有多条记录(Json数据)
可以等同于 Mysql 中的数据表。
通常我们一般隐式创建,我们不需要关注集合是如何创建的。
创建一个集合
1 | db.createCollection("test") |
查看当前数据库下的集合
1 | show collections |
删除集合(这里以 test 为例),这里的 test 应该换成响应的集合名称。
1 | db.test.drop(); |
文档的相关操作
都是以 JSON 为主。集合名可以存在,也可以不存在(隐式创建)。
增加数据。
1 | db.集合名.insertOne(传入json数据) |
查找数据
1 | db.集合名.find() |
插入多条数据
1 | db.集合名.insertMany(传入json数据) # 其中传入的 json 数据,以 [] 开头和结尾 |
修改数据。其中 $set 还有 $inc 等…
对于要将字符串转变成数字,可以采取 NumberInt 进行包裹。
1 | db.集合名.updateOne({查询条件}, {$set: {修改数据部分}}) |
其余方法可以尝试:
- updateMany
- updateOne
- updateSearchIndex
删除数据
1 | db.集合名.remove(查询条件) |
删除所有数据
1 | db.集合名.remove({}) |
文档的分页查询
查询总个数
1 | db.集合名.countDocuments() |
分页查询:limit 和 skip
- limit 限制查询条数,等同于每页显示多少条
- skip 跳过前面条数
1 | db.集合名.find().limit(数字) |
排序:sort,根据传入的字段决定是升序(1)还是倒序(-1)
1 | db.集合.find().sort({传入json数据}) |
文档的其他查询
正则查询。
基本格式如下:
1 | db.集合名.find({字段: /正则表达式/}) |
查询的其他方式:
- $gt 大于
- $lt 小于
- $gte 大于等于
- $lte 小于等于
- $ne 不等于
- $in 包含查询,等同于 mysql 的 in 查询
1 | db.集合名.find({userId: {$in: [1,2]}}) |
- $nin 不包含查询
- $and 并列运算
1 | db.集合名.find({$and: [{}, {}]}) |
- $or 或运算,和 $and 类似
索引
索引有 单索引、复合索引以及其他索引。
查看索引
1 | db.集合名.getIndexes() |
创建索引
1 | db.集合名.createIndex({字段: 1}) # 1 表示升序 , -1 表示降序 |
删除索引
1 | db.集合名.dropIndex(索引名称) |
删除所有索引
1 | db.集合名.dropIndexes() |
NodeJs 操作 Mongodb
安装 npm 包
1 | npm i mongodb |
基本模板,操作 mongodb。一般情况下都是异步获取
1 | const MongoClient = require('mongodb').MongoClient; |
SpringBoot 操作 mongodb
创建 springboot ,并且添加依赖。
1 | <dependency> |
配置文件 application.yml
1 | spring: |
运行 SpringBoot ,查看是否连接成功。
连接成功后,SpringBoot 日志会显示下面红线部分,成功连接 mongodb。
创建实体类
bean 包下创建 Comment 类
1 |
|
DAO 接口
1 | public interface CommentRepository extends MongoRepository<Comment, String> { |
然后写 Service 层和 Controller 层,具体的调用方法和 Mysql 类似。本文不再阐述。
测试
查询所有评论
1 |
|
点赞功能
类似于 mongodb 的 $inc,需要借助 MongoTemplate
1 |
|
更新前:
更新后: