Mongodb 从搭建到基本使用

话不多说,直接开搞。

搭建:该文章中的搭建基于阿里云,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);
    }

}

 


综上所述,虽然综合了安装和基本使用,看似简单,但是,好记性不如烂笔头,知识需要温故而知新,还需要我们实际的操作以及应用,更需要我们自己灵活运用,在开发环境中,其实,对于技术的选择或应用,基于我们对技术的熟悉,只有熟悉了以后,我们才能在以后的开发中,有一个很好的评估,是否可以使用它?使用它的优势、劣势等等。

最后,希望这篇文章对你有所帮助,如可以,帮我点个赞,十分感谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值