先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
{ “ok” : 1 }
- 删除集合
-
db.collection.drop()
-
collection 为集合名称
3.2.3 文档操作
1 插入文档
show dbs; // 查看数据库
use test; // 如果 test 数据库不存在,则创建 test
// 插入一条记录,如果集合不存在,先创建集合,在插入数据
db.user.insert({“id”:“1”,“name”:“Gorit”,“age”:16});
// 一次性插入多条记录
db.user.insert({“id”:“5”,“name”:“Gorit555”,“age”:16},{“id”:“6”,“name”:“Gorit6666”,“age”:18});
// 一次性插入多条
db.user.insertMany([{“id”:“4”,“name”:“Gori333”,“age”:16},{“id”:“4”,“name”:“Gorit4444”,“age”:18}])
插入文档还有
-
db.collection_name.insertOne()
-
db.collection_name.insertMany()
2. 更新文档
语法
db.collection.update(
,
,
{
upsert: ,
multi: ,
writeConcern:
}
)
参数说明:
-
query : update的查询条件,类似sql update查询内where后面的。
-
update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
-
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
-
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
-
writeConcern :可选,抛出异常的级别。
// 添加测试数据
db.user.insert({“id”:“5”,“name”:"Gorit ",“age”:16},);
// 修改数据
db.user.update(
{“name”:“Gorit”},
{$set:{“name”:“张三”,“age”:17}}
);
// 这样做只会修改第一条同名的条件记录,如果要批量修改同名的记录,可以这么做
db.user.update(
{“name”:“Gorit”},
{$set:{“name”:“张三”,“age”:17}},
{multi:true}
);
// 更多的条件修改
只更新第一条记录:
db.col.update( { “count” : { $gt : 1 } } , { $set : { “test2” : “OK”} } );
全部更新:
db.col.update( { “count” : { $gt : 3 } } , { $set : { “test2” : “OK”} },false,true );
只添加第一条:
db.col.update( { “count” : { $gt : 4 } } , { $set : { “test5” : “OK”} },true,false );
全部添加进去:
db.col.update( { “count” : { $gt : 5 } } , { $set : { “test5” : “OK”} },true,true );
全部更新:
db.col.update( { “count” : { $gt : 15 } } , { $inc : { “count” : 1} },false,true );
只更新第一条记录:
db.col.update( { “count” : { $gt : 10 } } , { $inc : { “count” : 1} },false,false );
3. 删除文档
db.collection.remove(
,
)
// mangoDB 版本在 2.6 版本以后
db.collection.remove(
,
{
justOne: ,
writeConcern:
}
)
使用
// 删除所有数据
db.collection_ name.remove({})
// 删除指定字段的记录
db.collection_name.remove({“id”:“1”})
// 删除指定记录的第一条
db.collection_name.remove({“id”:“1”},1)
// 新版本删除所有的集合
db.collection_name.deleteMany({})
// 新版本删除多个 status 为 A的
db.collection_name.deleteMany({ status : “A” })
// 新版本删除一个 status 为 D 的集合
db.inventory.deleteOne( { status: “D” } )
4. 查询文档
4.1 条件查询
对应 where 条件查询
| 操作 | 格式 | 示例 | RDBMS 中对应的语句 |
| — | — | — | — |
| 等于 | { key:value } | db.user.find({“name”:“Gorit111”}) | where age = 17 |
| 小于 | { key : { KaTeX parse error: Expected 'EOF', got '}' at position 12: lt : value }̲ } | db.user.fi…lt:20}}); | where age < 20 |
| 小于或等于 | { key : { KaTeX parse error: Expected 'EOF', got '}' at position 13: lte : value }̲ | db.user.find…lte:20}}); | where age <= 20 |
| 大于 | { key : { KaTeX parse error: Expected 'EOF', got '}' at position 12: gt : value }̲ | db.user.find…gt:16}}); | where age > 16 |
| 大于或等于 | { key : { KaTeX parse error: Expected 'EOF', got '}' at position 13: gte : value }̲ | db.user.find…gte:16}}); | where age >=16 |
| 不等于 | { key : { KaTeX parse error: Expected 'EOF', got '}' at position 12: ne : value }̲ | db.user.find…ne: 16}}) | where age <> 16 |
//查看所有文档记录
db.collection_name.find()
// 查询一个文档
db.collection_name.findOne();
// 条件查询
// 条件查询 ==
db.user.find({“name”:“Gorit111”}) // where name = “张三” 全匹配
// 条件查询 小于
db.user.find({“age”:{$lt:17}}); // where age < 17
// 条件查询 小于或等于
db.user.find({“age”:{$lte:20}}); // where age <= 20
// 条件查询 大于
db.user.find({“age”:{$gt:16}}); // where age > 10
// 条件查询 大于或等于
db.user.find({“age”:{$gte:16}}); // where age >= 16
// 条件查询 不等于
db.user.find({“age”:{$ne: 16}})
4.2 逻辑查询
// 逻辑与 and 查询
db.user.find({“age”:17},{“id”:“1”})
// 逻辑或 or 查询
db.user.find(
{
$or: [
{“age”:17},
{“id”:“1”}
]
}
)
// 组合查询练习
where age <=20 or (name in (“张三”,“Gorit111”)
db.user.find(
{
“age”: {$lte: 20},
$or: [
{
“name”: “张三”
},{
“name”: “Gorit111”
}]
}
)
4.3 分页查询
- 分页参数 Limit()
db.collection_name.find().limit(number);
// 查询数据库汇中的三条记录,如果数据库没有指定 limit() ,默认查询所有的数据
db.user.find().limit(3);
- 使用 skip() 跳跃指定数量的数据
// 跳过第一条记录,查询往后的三条记录
db.user.find().limit(3).skip(1);
4.4 排序
在 MangoDB 中使用 sort() 方法对数据进行排序, sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来制定排序方式,1 表示升序列,-1 表示降序列
// 根据年龄升序
db.user.find().sort({“age”:1})
// 根据年龄降序排列
db.user.find().sort({“age”:-1});
4.5 聚合
MangoDB 中聚合(aggregate)主要用于处理数据(诸如平均值,求和等)并返回计算的结果
不过我下的版本貌似不支持聚合查询,所这里就不掩饰了。
3.3 数据库连接工具连接 MangoDB
有很多工具都可以连接,我使用的是 Jetbrains 公司提供的数据库连接软件:datagrip
当然使用 idea 自带的也可以
或者用其他的工具都行的
================================================================================
作为一名 Java 开发者,我们怎么能少了 Java 连接 mangoDB 呢?
接下来进入实战部分
4.1 SpringBoot 整合 MongoDB
SpringBoot 整合 MongoDB 整合
- 依赖导入
org.springframework.boot
spring-boot-starter-data-mongodb
- 配置文件编写
为了方便测试,我这里
应用服务 WEB 访问端口
server:
port: 8080
应用名称
spring:
application:
name: demo
resources: # spring 静态资源扫描路径
static-locations: classpath:/static/
data:
mongodb:
database: test # 要连接的数据库
host: localhost # 数据库地址
port: 27017 # 端口
#authentication-database: admin # 验证登录信息库
#username: # 连接数据库的账号
#password: # 连接书库的密码
- 实战
编写实体类
package cn.gorit.entity;
/**
-
@Classname Book
-
@Description TODO
-
@Date 2020/11/9 21:48
-
@Created by CodingGorit
-
@Version 1.0
*/
public class Book {
private Integer id;
private String name;
private String author;
// getter setter 构造方法省略
}
编写 BookDao
package cn.gorit.dao;
import cn.gorit.entity.Book;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;
/**
-
@Classname BookDao
-
@Description TODO
-
@Date 2020/11/9 21:48
-
@Created by CodingGorit
-
@Version 1.0
*/
public interface BookDao extends MongoRepository<Book,Integer> {
List findAllByAuthor(String author);
Book findByNameEquals(String name);
}
编写 BookController
package cn.gorit.controller;
import cn.gorit.dao.BookDao;
import cn.gorit.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
最后
总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习
还有更多学习笔记面试资料也分享如下:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
rit.controller;
import cn.gorit.dao.BookDao;
import cn.gorit.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
最后
总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习
还有更多学习笔记面试资料也分享如下:
[外链图片转存中…(img-0FaGP0ND-1713422971049)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-ZHdk0c9t-1713422971050)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!