MongoDB下载安装入门 + SpringBoot简单集成

MongoDB安装入门 + SpringBoot简单集成

  • MongoDB下载安装
    • 下载安装
    • 连接图形化界面
      • MongoDB Compass
    • Navicat Premium
  • Spring Boot集成API操作
    • 添加maven
    • 配置数据库连接
    • 调用Mongo API

MongoDB下载安装

下载安装

MongoDB官网地址:https://www.mongodb.com/
下载地址:https://www.mongodb.com/try/download/community

选择需要的版本进行安装。点击下载下来的msi文件,根据指引默认安装。

在这里插入图片描述

安装时需要勾选Install MongoDB Compass,安装图形化界面。

在这里插入图片描述

如果想要更便捷,可以使用docker下载安装。

# 拉取mongo镜像
docker pull mongo
# 运行mongo
docker run -d --name mongodb -p 27017:27017 mongo

# -d 参数表示后台运行容器。
# --name mongodb 给容器命名,便于后续管理。
# -p 27017:27017 将宿主机的27017端口映射到容器的27017端口,这样您就可以通过宿主机的27017端口访问MongoDB服务。
# mongo 是使用的镜像名称,如果您之前下载了特定版本,这里就写那个版本号

# 运行mongo,指定数据挂载位置(数据持久化)
docker run -d --name mongodb -p 27017:27017 -v mongodb_data:/data/db mongo

# 通过MongoDB客户端或命令行工具连接到它
mongo --host localhost --port 27017

连接图形化界面

MongoDB Compass

MongoBD有默认的图形化界面 MongoDB Compass,在上面的msi包安装过程中选择就会安装。
双击打开,如图:
在这里插入图片描述
默认有如下库:
在这里插入图片描述

创建一个测试表t_test

在这里插入图片描述
在这里插入图片描述

Navicat Premium

在这里插入图片描述

在Navicat中创建MongoDB连接。

在这里插入图片描述

测试连接,成功。

在这里插入图片描述

新建查询,选择使用的database。

# 切换到admin库
use admin;

# 为当前库创建一个用户并指定角色
db.createUser({user:"admin",pwd:"admin",roles:["root"]});

# 查询当前数据库中所有的用户
show users;

# 查询当前数据库中所有的用户
db.system.users.find().pretty();

在这里插入图片描述

Spring Boot集成API操作

添加maven

在已有的Spring boot的项目中添加依赖

<!-- 具体版本根据当前系统需要的版本进行指定 -->

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-mongodb</artifactId>
  <version>2.6.14</version>
</dependency>

配置数据库连接

在application.properties中配置

spring.data.mongodb.uri=mongodb://127.0.0.1:27017/local

在application.yml中配置

# 不带密码的配置
spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/local

# 带密码的配置
spring:
  data:
    mongodb:
      uri: mongodb://user1:password1@localhost:27017/local?authSource=admin&authMechanism=SCRAM-SHA-1

调用Mongo API

TestEntity 可以为任意实体类。

import com.ccnest.common.core.flow.entity.TestEntity;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * @author Joi
 * @since 2024/5/29 16:59
 */
@Component
public class MongoTableTestMapper {

    /**
     * 注入模板
     */
    @Resource
    private MongoTemplate mongoTemplate;
    
    /**
     * 添加数据
     */
    public void addTestEntity (TestEntity entity) {
        mongoTemplate.save(entity, "t_test");
    }

    /**
     * 查询数据
     */
    public TestEntity getTestEntity (String id) {
        return mongoTemplate.findById(id, TestEntity.class, "t_test");
    }

}

添加代码测试

import com.alibaba.fastjson.JSONObject;
import com.ccnest.custom.homestaycq.mapper.MongoTableTestMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

/**
 * @author Joi
 * @since 2024/3/22 17:50
 */
@SpringBootTest(classes = Application.class)
@RunWith(SpringRunner.class)
public class DemoTest {

    @Resource
    MongoTableTestMapper mongoTableTestMapper;

    @Test
    public void testMongoDBInsert() {
        String jsonStr = "{\n" +
                "        \"applicationDefineId\": \"dd3361ed199d4c678476cbf47fedb06e\",\n" +
                "        \"chainDefineId\": null,\n" +
                "        \"chainState\": 1,\n" +
                "        \"depth\": 1,\n" +
                "        \"flowNodeDefineId\": \"30f24a79364f92b38158ddaccdc832e6\",\n" +
                "        \"follow\": false,\n" +
                "        \"remark\": null,\n" +
                "        \"rootId\": \"d6301246ab3f94e96ac3b66ba1445022\",\n" +
                "        \"tag\": null,\n" +
                "        \"targetNodeDefineIds\": null,\n" +
                "        \"version\": 1\n" +
                "    }";
        TestEntity entity = JSONObject.parseObject(jsonStr, TestEntity.class);
        mongoTableTestMapper.addUser(entity);
    }

    @Test
    public void getFlowNodeInstance() {
        TestEntity entity = mongoTableTestMapper.getTestEntity("6656ff67c5cd105fc021970d");
        System.out.println(entity);
    }

}

获取的实体数据。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/668325.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CobaltStrike基本渗透

目录 CobaltStrike简介 主要功能&#xff1a; 使用注意&#xff1a; 在使用CobaltStrike进行渗透测试时&#xff0c;务必遵守法律法规&#xff0c;并获得合法授权。 CobaltStrike安装 前提 安装 服务端安装 windows安装 CS基本使用 监听器配置 一些基本的攻击…

UnityAPI学习之游戏物体的方法使用

目录 游戏物体 创建游戏物体的三种方式 组建的获取和查找 游戏物体的方法与其他成员变量 游戏物体的生成 游戏物体的激活状态/标签(tag)/层级(layer) 游戏物体的激活与失活 游戏物体的查找 1. 名称查找(Find) 2. 通过标签查找游戏物体&#xff08;FindGameObjectWithT…

Leecode---动态规划---打家劫舍 / 乘积最大子数组

动态规划法&#xff1a; 思路&#xff1a; &#xff08;1&#xff09;状态定义&#xff1a;dp[i]代表前i家能偷盗的最大金额 &#xff08;2&#xff09;状态初始化&#xff1a;如果只有一家&#xff0c;只能偷这家dp[0]nums[0]&#xff1b;如果有两家&#xff0c;因为是连通的&…

fluent UI v9版本Dialog右上角x按钮聚焦问题解决

右上角x按钮聚焦效果展示 第一次点击不会聚焦&#xff0c;第二次或多次点击会出现这种情况。如果多个地方公用一个页面里&#xff0c;这个页面包含这个组件&#xff0c;那其它页面刚打开弹框就是聚焦状态&#xff0c;是个样式的问题。 解决&#xff1a; import * as React fr…

pytorch-Normalization

目录 1. 为什么Normalization2. Normalization2.1 image Normalization2.2 Batch Normalization 3. Normalization pytorch实现3.1 Normalization标准公式3.2 2d normalization3.3 normalize test 4. 使用normalization的好处 1. 为什么Normalization 下图使用sigmoid激活函数…

【2024新版】银系统源码/超市收银系统/智慧新零售/ERP进销存管理/线上商城/商户助手

>>>系统简述&#xff1a;本系统适用于超吃便利店&#xff0c;美妆母婴行业&#xff0c;服装鞋帽行业&#xff0c;食品零售行业&#xff0c;3C数码电子行业&#xff0c;食品生鲜等一切零售行业&#xff0c;产品功能角色介绍如下 合伙人&#xff1a;无限发展代理商和商…

Jetpack架构组件_1.基本知识

1.什么是Jetpack&#xff1f; Jetpack 是一个由多个库组成的套件&#xff0c;可帮助开发者遵循最佳做法、减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码&#xff0c;让开发者可将精力集中于真正重要的编码工作。Jetpack 包含一系列 Android 库&#xff0c;它…

RTPS协议之Behavior Module

目录 交互要求基本要求RTPS Writer 行为RTPS Reader行为 RTPS协议的实现与Reader匹配的Writer的行为涉及到的类型RTPS Writer实现RTPS WriterRTPS StatelessWriterRTPS ReaderLocatorRTPS StatefulWriterRTPS ReaderProxyRTPS ChangeForReader RTPS StatelessWriter BehaviorBe…

python上位机串行通信接收字节数据的校验处理-以crc16-modbus为例

在串行通信中&#xff0c;接收到的数据是否正确&#xff0c;一般用CRC校码的方式来完成。上位机向下位机发送数据时&#xff0c;需要加上校验码&#xff0c;同理&#xff0c;下位机向上位机上报数据时&#xff0c;也需要加上校验码。 校验码的计算方法有很多&#xff0c;比较简…

el-date-picker 选择日期范围只保存左侧日期面板

需求 日期筛选&#xff0c;但限制只能选择同一个月的数据&#xff0c;故此应该去掉右侧月份面板。 实现 主要是通过 css 样式实现&#xff1a; <style> /* 隐藏右边日期面板 */ .el-picker-panel__content.el-date-range-picker__content.is-right .el-date-table, .…

HTTP基础

一、HTTP协议 1、HTTP协议概念 HTTP的全称是&#xff1a;Hyper Text Transfer Protocol&#xff0c;意为 超文本传输协议。它指的是服务器和客户端之间交互必须遵循的一问一答的规则。形容这个规则&#xff1a;问答机制、握手机制。 它规范了请求和响应内容的类型和格式, 是基于…

springboot中抽象类无法注入到ioc容器

1、背景 在写代码时&#xff0c;发现service接口有两个实现类&#xff0c;并且两个实现类中没有对类名重命名&#xff0c;属性注入的时候也没有使用byName或Qualifier&#xff0c;正确情况下会发生多实现报错的问题&#xff0c;以前对这个问题进行解析过。 2、调试过程 我想…

Java面试题:Redis1_Redis的使用场景和如何解决Redis缓存穿透问题

Redis使用场景常见问题 缓存 缓存三兄弟(穿透,击穿,雪崩) 双写一致 持久化 数据过期策略 数据淘汰策略 分布式锁 setnx,redisson 消息队列,延迟队列 … 解决Redis缓存穿透问题 缓存穿透问题 请求->redis缓存->mysql数据库 当一个新请求到来时,先会访问redi…

小程序配置自定义tabBar及异形tabBar配置操作

什么是tabBar&#xff1f; 小程序的tabbar是指小程序底部的一组固定导航按钮&#xff0c;通常包含2-5个按钮&#xff0c;用于快速切换小程序的不同页面。每个按钮都有一个图标和文本标签&#xff0c;点击按钮可以切换到对应的页面。tabbar通常放置在小程序的底部&#xff0c;以…

gitlab之cicd的gitlab-runner cicd实践-rpm离线安装

目录 概述资源官方资源离线资源 操作环境验证gitlab-runner安装注意事项重启向gitlab注册CICD流程测试 概述 gitlab此文使用rpm离线安装的方式&#xff0c;使用 gitlab-runner dockerfile构建运行环境&#xff1a; 如有兴趣可以参考这篇文章   gitlab选择 docker-compose 执行…

Leetcode 剑指 Offer II 080.组合

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定两个整数 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 个…

sh发送邮件如何通过配置SMTP服务器来实现?

sh发送邮件的操作方法&#xff1f;如何使用Shell脚本自动发信&#xff1f; 在Shell脚本中实现邮件发送功能是一项常见需求&#xff0c;特别是在自动化任务执行或系统监控中。AokSend将介绍如何通过配置SMTP服务器来实现sh发送邮件的方法和注意事项。 sh发送邮件&#xff1a;安…

01Linux以及操作系统概述

课程目标 1.了解现代操作系统的整体构成及发展历史 2.了解Linux操作系统及其分支版本 3.直观上理解服务器端与桌面端版本的区别 课程实验 1.通过对CentOS和Ubuntu的演示&#xff0c;直观理解Linux与Windows的异同 课堂引入 本章内容主要为大家详细讲解Linux操作系统(以下简…

Mac电脑pd虚拟机专用windows系统镜像(m1/intel)win10、11镜像文件

入手了Mac电脑后&#xff0c;由于需要用到Windows软件&#xff0c;又嫌安装双系统太复杂&#xff0c;这时候Mac就用到了安装虚拟机&#xff0c;目前最好用的虚拟机是Parallels Desktop&#xff0c;win镜像版本要根据自己的喜好选对&#xff0c;在此提供分别兼容M1和Intel的win1…

开发一套家政上门预约服务系统需要运用的关键技术

家政上门预约服务系统开发是指建立一个在线平台或应用程序&#xff0c;用于提供家政服务的预约和管理功能。该系统的目标是让用户能够方便地预约各种家政服务&#xff0c;如保洁、家庭护理、月嫂、家电维修等&#xff0c;并实现服务供应商管理和订单管理等功能。 开发一套家政上…