MongoDB入门介绍与实战

news2024/9/22 21:23:10

目录

 

1. 什么是MongoDB?

2. 安装MongoDB

1. 离线安装

2. 使用docker-compose安装

3. mongo命令行实战

1. 连接到 MongoDB 数据库

2. 创建集合(表)

3. 插入数据

4. 查询数据

5. 更新数据

6. 删除数据

4. Springboot集成MongoDB实战

Java Main方法中使用示例

1. 添加MongoDB Java驱动依赖

2. 使用Java与MongoDB交互

Springboot集成Mongo示例

1. 添加 MongoDB 依赖

2. 配置 MongoDB 连接

3. 创建实体类

4. 创建 Repository 接口

5. 编写服务层和控制器

6. 运行应用程序

5. 总结


 

1. 什么是MongoDB?

MongoDB是一个面向文档的NoSQL数据库,以其灵活性、可伸缩性和性能而著称。它采用了文档存储模型,数据以JSON类似的BSON格式存储,并支持丰富的查询功能。我们可以使用Java与MongoDB进行交互,实现数据的存储、检索和处理。

官网:MongoDB:应用程序数据平台 | MongoDB

2. 安装MongoDB

1. 离线安装

  1. 下载MongoDB: 前往Download MongoDB Community Server | MongoDB下载对应操作系统的安装程序。
  2. 安装MongoDB: 可以根据文档选择安装方式并设置配置。或参考这篇:【MongoDB】一文带你快速掌握如何在Windows系统和Linux系统中安装部署MongoDB_windows 安装mongodb4-CSDN博客
  3. 启动MongoDB服务

在安装完成后,执行命令行启动mongo:

sudo service mongod start

2. 使用docker-compose安装

创建docker-compose.yml文件并写入以下内容

version: '3.8'

services:
  mongodb:
    image: mongo
    container_name: my_mongodb
    ports:
      - "27017:27017"
    volumes:
      - ./data:/data/db  # 将MongoDB数据挂载到本地目录,可持久化数据
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin  # MongoDB的初始用户名
      - MONGO_INITDB_ROOT_PASSWORD=password  # MongoDB的初始密码
    restart: always

执行命令创建并启动

docker-compose up -d

8a8cfe4bafc645998f251e63b50f9459.png

执行命令查看MongoDB服务

docker ps

feac548b4dd443e1a1dc62ce592fb59f.png

3. mongo命令行实战

1. 连接到 MongoDB 数据库

 按照上面的方式进行部署完成后,使用命令行连接mongo

# 执行命令进入容器
docker exec -it <mongo容器id> /bin/bash

# cd 到bin目录 连接mongo
mongosh -u admin -p

#输入密码


root@09b330d49683:/bin# mongosh -u admin -p
Enter password: ********
Current Mongosh Log ID: 6596bf017f07cfefe7ae2079
Connecting to:          mongodb://<credentials>@127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.1.1
Using MongoDB:          7.0.4
Using Mongosh:          2.1.1

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting
   2024-01-04T13:58:01.344+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
   2024-01-04T13:58:02.323+00:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
   2024-01-04T13:58:02.323+00:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
   2024-01-04T13:58:02.323+00:00: vm.max_map_count is too low
------

test> show databases;
admin   100.00 KiB
config   60.00 KiB
local    72.00 KiB
test> use admin;
switched to db admin
admin> show tables;

2. 创建集合(表)

// 使用use命令切换到数据库
use mydb;

// 创建一个名为my_collection的集合
db.createCollection("my_collection");

 

3. 插入数据

// 插入一条数据到my_collection集合
db.my_collection.insertOne({ "name": "Alice", "age": 25 });

// 插入多条数据到my_collection集合
db.my_collection.insertMany([
    { "name": "Bob", "age": 30 },
    { "name": "Charlie", "age": 35 }
]);

 

4. 查询数据

// 查询my_collection集合中的所有数据
db.my_collection.find();

// 查询年龄大于等于30的数据
db.my_collection.find({ "age": { $gte: 30 } });

// 只返回name字段,不返回_id字段
db.my_collection.find({}, { "name": 1, "_id": 0 });

 

5. 更新数据

// 更新符合条件的第一条数据
db.my_collection.updateOne({ "name": "Bob" }, { $set: { "age": 32 } });

// 更新符合条件的所有数据
db.my_collection.updateMany({ "age": { $gte: 30 } }, { $set: { "status": "active" } });

 

6. 删除数据

// 删除符合条件的第一条数据
db.my_collection.deleteOne({ "name": "Alice" });

// 删除符合条件的所有数据
db.my_collection.deleteMany({ "age": { $gte: 30 } });

478e9962631e437e8680014e1a7e6c62.png

 

4. Springboot集成MongoDB实战

Java Main方法中使用示例

1. 添加MongoDB Java驱动依赖

Maven项目中,在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.4.4</version>
</dependency>

2. 使用Java与MongoDB交互

以下是一个简单的Java示例,演示了如何连接到MongoDB、插入数据并检索数据:

import com.mongodb.client.*;
import org.bson.Document;

public class MongoDBExample {

    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            System.out.println("成功连接到MongoDB!");

            // 选择数据库和集合
            MongoDatabase database = mongoClient.getDatabase("mydb");
            MongoCollection<Document> collection = database.getCollection("mycollection");

            // 插入文档
            Document doc = new Document("name", "John Doe")
                    .append("age", 30)
                    .append("email", "john@example.com");
            collection.insertOne(doc);
            System.out.println("文档成功插入!");

            // 查询文档
            FindIterable<Document> documents = collection.find();
            for (Document document : documents) {
                System.out.println(document.toJson());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

Springboot集成Mongo示例

1. 添加 MongoDB 依赖

pom.xml 文件中添加 Spring Data MongoDB 依赖:

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

 

2. 配置 MongoDB 连接

application.properties 文件中配置 MongoDB 连接信息:

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydb
spring.data.mongodb.username=admin
spring.data.mongodb.password=password

 

3. 创建实体类

创建一个简单的实体类,代表 MongoDB 中的文档:

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "users")
public class User {
    @Id
    private String id;
    private String name;
    private int age;

}

 

4. 创建 Repository 接口

创建一个继承自 MongoRepository 的接口,用于操作 MongoDB 中的数据:

import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserRepository extends MongoRepository<User, String> {
    // 自定义查询方法
    User findByName(String name);
    // 可以定义其他自定义查询方法
}

 

5. 编写服务层和控制器

在服务层(Service)和控制器(Controller)中使用 UserRepository 进行数据操作。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public User saveUser(User user) {
        return userRepository.save(user);
    }

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public User getUserByName(String name) {
        return userRepository.findByName(name);
    }


}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @PostMapping
    public User addUser(@RequestBody User user) {
        return userService.saveUser(user);
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/{name}")
    public User getUserByName(@PathVariable String name) {
        return userService.getUserByName(name);
    }

}

 

6. 运行应用程序

编写完成后,启动 Spring Boot 应用程序,然后通过rest接口进行访问测试。

 

5. 总结

MongoDB是一个强大而灵活的NoSQL数据库,通过Java驱动程序,我们可以轻松地连接、操作和管理MongoDB数据库。本文介绍了MongoDB的安装过程,并演示了使用Java与MongoDB进行简单交互的实例。希望这些内容能帮助大家学习和使用MongoDB。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

参加CTF比赛不会这些技术点,过去也是当炮灰!【CTF要掌握哪些技术点】

文章目录 0.前言1. Web技术2. 逆向工程3. 密码学4. 网络分析5. 系统编程6. 二进制分析7. 密码破解8. 隐写术9. 社会工程学10. 日志分析 0.前言 很多人学了很久网络安全方面的技术出来还是找不到工作&#xff0c;这到底是为什么&#xff1f;其实是没弄清楚现在企业在网络安全方…

机器人开发--动力系统

机器人开发--动力系统 1 介绍概述BMS电池管理芯片系电源管理细分赛道&#xff0c;主要产品形态包括电池计量&#xff08;电量计&#xff09;、电池安全、充电管理等三大类芯片BMS 产业链动力电源、消费电子细分领域 BMS 芯片种类、技术及下游销量概览 电池电池包典型产品及参数…

多线程基础知识点

1. 进程 一个正在执行中的程序就是一个进程&#xff0c;系统会为这个进程发配独立的【内存资源】。进程是程序的一次执行过程&#xff0c;它有自己独立的生命周期&#xff0c;它会在启动程序时产生&#xff0c;运行程序时存在&#xff0c;关闭程序时消亡。 例如&#xff1a;正…

异地环控设备如何远程维护?贝锐蒲公英解决远程互联难题

青岛某企业致力于孵化设备、养禽设备和养猪设备的研发、生产和服务&#xff0c;历经三十多年发展&#xff0c;目前已成长为行业主要的养殖装备及工程服务提供商&#xff0c;产品覆盖养殖产业链中绝大多数环节&#xff0c;涉及自动化设备、环控设备、整体解决方案等。 在实际应用…

【kettle】pdi/data-integration 集成kerberos认证连接hdfs、hive或spark thriftserver

一、背景 kerberos认证是比较底层的认证&#xff0c;掌握好了用起来比较简单。 kettle完成kerberos认证后会存储认证信息在jvm中&#xff0c;之后直接连接hive就可以了无需提供额外的用户信息。 spark thriftserver本质就是通过hive jdbc协议连接并运行spark sql任务。 二、…

Android开发编程从入门到精通,安卓技术从初级到高级全套教学

一、教程描述 本套教程基于JDK1.8版本&#xff0c;教学内容主要有&#xff0c;1、环境搭建&#xff0c;UI布局&#xff0c;基础UI组件&#xff0c;高级UI组件&#xff0c;通知&#xff0c;自定义组件&#xff0c;样式主题&#xff1b;2、四大组件&#xff0c;Intent&#xff0…

C#编程-实现继承

C#允许您通过扩展现有类的功能以创建新类来实现继承。 从基类创建派生类 使用以下语法在C#中创建派生类: class <derived_class>:<base_class>{...}确定继承的层次结构 要确定继承层次结构,必须检查派生类与基类之间的关系种类。确保派生类是一种基类。 请考虑以…

数据结构 模拟实现Stack栈(数组模拟)

目录 一、栈的概念 二、栈的接口 三、栈的方法实现 &#xff08;1&#xff09;push方法 &#xff08;2&#xff09;pop方法 &#xff08;3&#xff09;peek方法 &#xff08;4&#xff09;size方法 ​编辑 &#xff08;5&#xff09;empty方法 四、最终代码 一、栈的…

自动重置密码

在运维工作中为用户重置密码是常见的操作&#xff0c;虽然手工运行 passwd 命令就可以很方便地设置&#xff0c;但在用户忘记密码后还需要管理员操作。在用户数量很大时也是不小的工作量。因此为用户提供工具来自动重置密码就很有必要。 技术方案 技术方案比较简单&#xff0…

和鲸社区数据分析每周挑战【第一百二十一期:电商店铺经营分析】

和鲸社区数据分析每周挑战【第一百二十一期&#xff1a;电商店铺经营分析】 文章目录 和鲸社区数据分析每周挑战【第一百二十一期&#xff1a;电商店铺经营分析】一、数据文档二、探索性数据分析三、品类销售效果评估四、用户参与活动优惠的购物行为分析五、不同订单来源对购买…

Qt实现文本编辑器(二)

上一章节讲述了如何制作文本编辑页面&#xff0c;以及应该有哪些功能需要实现&#xff0c;只是做了展示效果&#xff0c;实际的点击事件并没有处理。今天来具体讲解下是如何实现菜单栏以及工具栏上对应的需求吧~ 功能实现 功能&#xff1a; 1、动作消息触发 2、具体功能&am…

idea设置注释在鼠标当前位置,使其不从顶格位置添加注释

idea设置注释在鼠标当前位置&#xff0c;使其不从顶格位置添加注释 默认情况下&#xff0c;注释都是从改行的顶格开始&#xff0c;看起来不太美观而且不易清除分级 设置让其从代码处开始&#xff0c;步骤&#xff1a;File–>Sttings–>Editor–>Code Style &#xff…

使用 CompletableFuture 分批处理任务

一、无返回值任务函数 // 数据分批 List<List<StatisticsDTO>> batches Lists.partition(statisticsList, BATCH_SIZE); List<CompletableFuture<Void>> futures new ArrayList<>(batches.size());// 数据处理 for (int i 0; i < batches…

C++:类和对象(3)

目录 1.构造函数调用规则 2.深拷贝和浅拷贝 3.初始化列表 4.类对象作为类成员 1.构造函数调用规则 默认情况下&#xff0c;C编译器至少给类添加三个函数&#xff1a; 1.默认构造函数(无参&#xff0c;函数体为空) 2.默认析构函数(无参&#xff0c;函数体为空) 3.默认拷贝构…

GNSS位移监测站对尾矿库坝体表面位移进行自动化监测

表面位移监测&#xff1a;通过GNSS位移监测站对尾矿库坝体表面位移进行自动化监测&#xff0c;掌握尾矿坝整体表面位置的变化及其变化速率&#xff08;包括平面位移和垂直沉降&#xff09;&#xff0c;确定尾矿坝坝体整体位移变形的情况&#xff0c;是确定尾矿库安全性的重要指…

一文讲透SPSS相关性分析结果怎么看?

推荐采用《SPSS统计分析入门与应用精解&#xff08;视频教学版&#xff09;》 杨维忠、张甜 清华大学出版社“5.1 双变量相关分析” 的解答。 本节内容选自《SPSS统计分析入门与应用精解&#xff08;视频教学版&#xff09;》 杨维忠、张甜 清华大学出版社“5.1 双变量相关分析…

Protobuf 编码结构

编码结构 什么是protobuf protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法&#xff0c;可用于数据通信协议和数据存储等&#xff0c;它是 Google 提供的一个具有高效协议数据交换格式工具库&#xff0c;是一种灵活、高效和自动化机制的结构数据序列…

24款奔驰C260L升级C63包围 渣男的外表

今天店里来了一台24款奔驰C260L 一提车就过来升级 我们公司还有包上牌服务 车主说 升级完包围 帮忙安排一下 原车的包围 没有那么霸气 特别是后杠 光溜溜的 升级后 四出尾喉 尾翼 直接牌面就起来了&#xff0c;星骏汇小许Xjh15863

真核微生物基因序列鉴定工具EukRep工具的安装和详细使用方法

介绍 EukRep是一种用于鉴定并分析环境中的真核微生物的工具。它基于16S rRNA基因序列&#xff0c;可以帮助研究人员确定和分类环境样品中存在的真核微生物群落。 EukRep 从宏基因组数据集中分类真核和原核序列 安装 要求Python3 推荐使用conda安装&#xff1a; $ conda cre…

HUAWEI华为荣耀MagicBook X 15酷睿i5-10210U处理器集显(BBR-WAH9)笔记本电脑原装出厂Windows10系统

链接&#xff1a;https://pan.baidu.com/s/1YVcnOP5YKfFOoLt0z706rg?pwdfwp0 提取码&#xff1a;fwp0 MagicBook荣耀原厂Win10系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、华为/荣耀电脑管家等预装程序 文件格式&#xff1a;esd/wim/swm 安装…