话不多说,直接开搞。
搭建:该文章中的搭建基于阿里云,centos7的版本
一、下载mongodb安装包(Install MongoDB Community Kubernetes Operator | MongoDB)
2、选择需要下载的版本
二、上传安装包到Linux上
如上传到root目录下,然后就是解压
①tar -zxvf xxx.tgz
②修改解压后的文件名 :mv xxx mongodb
③将文件移到/usr/local下
④在/usr/local/mongodb下新建文件夹
mkdir data
mkdir logs
三、设置 MongoDB 环境变量
vim /etc/profile
四、添加 MongoDB 配置文件
vim /etc/mongodb.conf
五、启动和关闭 MongoDB
在/usr/local/mongodb/bin下,有以下几个命令
①启动
-conf 配置启动
./mongod -f /etc/mongodb.conf
看到下面如图所示,就表示成功了
也可以通过命令查看
netstat -lnput 或ps -ef | grep mongodb
②关闭
也是在该目录下,使用命令mongod
./mongod --shutdown -f /etc/mongodb.conf
上述是对新手安装MongoDB的操作,已经完成,下面是基于springboot 集成mongodb
springboot 集成mongodb
①首先添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
②创建实体,如
以下就是测试,创建一个测试类
package com.zy.mongo;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.zy.pojo.People;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* @Author: zy
* @Date: 2023-11-02-15:20
* @Description:
*/
@SpringBootTest
public class TestMongodb {
@Resource
private MongoTemplate mongoTemplate;
@Mock
List mockList;
@BeforeEach
public void init(){
MockitoAnnotations.openMocks(this);
}
/**
* 向mongodb 中插入数据
*/
@Test
public void createMg(){
ArrayList<People> peopleArrayList = new ArrayList<>();
for(int i = 0;i < 20;i++){
People people=new People();
people.setAge(22);
people.setName("MongoDb_test_"+i);
people.setEmail(i+"@cc.com");
people.setAddress("sahnghai"+i);
//mockList.add(people);
peopleArrayList.add(people);
}
mongoTemplate.insertAll(peopleArrayList);
//People people1 = mongoTemplate.insert(people);
System.out.println("查询MG的数据:"+peopleArrayList);
}
/**
* 查询mongodb
*/
@Test
public void findMg(){
List<People> peopleList = mongoTemplate.findAll(People.class);
for (People s:peopleList) {
System.out.println("查询的数据:"+s);
}
}
/**
* 根据Id查询数据
*/
@Test
public void findByID(){
People people = mongoTemplate.findById("654351bfc1c65c1c3e9bfe89", People.class);
System.out.println("根据ID查询:"+people);
}
/**
* 条件查询方法
*/
@Test
public void findList(){
Query query=new Query(Criteria.where("name").is("张三").and("age").is(22));
List<People> tList = mongoTemplate.find(query, People.class);
System.out.println("条件查询:"+tList);
}
/**
* 模糊查询
*/
@Test
public void findLikeList(){
String likeName="o";//自定义的常量
String reges=String.format("%s%s%s", "^.*", likeName, ".*$");//匹配规则
Pattern pattern=Pattern.compile(reges, Pattern.CASE_INSENSITIVE);//正则匹配规则--pattern的常量
Query query =new Query(Criteria.where("name").regex(pattern));
List<People> peopleList=mongoTemplate.find(query,People.class);
for (People s:peopleList) {
System.out.println("模糊查询:"+s);
}
}
/**
* 分页查询
*/
@Test
public void findPage(){
Integer page=1;//当前页
Integer pageSize=3;//每页记录
//条件查询
String likeName="com";//自定义的常量
String reges=String.format("%s%s%s", "^.*", likeName, ".*$");//匹配规则
Pattern pattern=Pattern.compile(reges,Pattern.CASE_INSENSITIVE);//正则匹配规则--pattern的常量
Query query =new Query(Criteria.where("email").regex(pattern));
//查询集合记录总数
long count = mongoTemplate.count(query, People.class);
//分页查询
/**
* query.skip((page - 1) * pageSize) 获取到开始分页的位置下标
* 例如第一页 0*3=0从第0个记录开始
* 例如第二页 1*3=3从下标第三个记录开始
* limit(pageSize)限制每页的记录
*/
List<People> peopleList = mongoTemplate.find(query.skip((page - 1) * pageSize).limit(pageSize), People.class);
System.out.println("记录总数"+count);
for (People s:peopleList) {
System.out.println("分页数据:"+s);
}
}
/**
* mongodb 修改
*/
@Test
public void updatapeople(){
//查询id
People byId = mongoTemplate.findById("654351bfc1c65c1c3e9bfe89", People.class);
//设置值
byId.setName("updataName");
// 保存修改
Query query=new Query(Criteria.where("_id").is(byId.getId()));
Update update=new Update();
update.set("name",byId.getName());
UpdateResult updateResult = mongoTemplate.upsert(query, update, People.class);
//获取修改就记录数
long modifiedCount = updateResult.getModifiedCount();
System.out.println("记录数:"+modifiedCount);
}
/**
* mongodb删除操作
*/
@Test
public void delStudent(){
Query query =new Query(Criteria.where("_id").is("654351bfc1c65c1c3e9bfe89"));
DeleteResult result=mongoTemplate.remove(query,People.class);
long deletedCount = result.getDeletedCount();
//=1成功 =0失败
System.out.println("记录数:"+deletedCount);
}
/**
* mongodb 排序
*/
@Test
public void sortPeople(){
List<People> peopleList = mongoTemplate.findAll(People.class);
peopleList = peopleList.stream().sorted(Comparator.comparing(People::getAge).reversed())
.collect(Collectors.toList());
System.out.println(peopleList);
}
}
综上所述,虽然综合了安装和基本使用,看似简单,但是,好记性不如烂笔头,知识需要温故而知新,还需要我们实际的操作以及应用,更需要我们自己灵活运用,在开发环境中,其实,对于技术的选择或应用,基于我们对技术的熟悉,只有熟悉了以后,我们才能在以后的开发中,有一个很好的评估,是否可以使用它?使用它的优势、劣势等等。
最后,希望这篇文章对你有所帮助,如可以,帮我点个赞,十分感谢!!!