MongoDB入门介绍与实战

目录

 

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: mongocontainer_name: my_mongodbports:- "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.1For mongosh info see: https://docs.mongodb.com/mongodb-shell/------The server generated these startup warnings when booting2024-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-filesystem2024-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 {@Idprivate 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;@Autowiredpublic 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;@Autowiredpublic UserController(UserService userService) {this.userService = userService;}@PostMappingpublic User addUser(@RequestBody User user) {return userService.saveUser(user);}@GetMappingpublic 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.hqwc.cn/news/325336.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java经典框架之Dubbo

Dubbo Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. Dubbo概述 2. Dubbo基本应用 3…

FFmpeg安装保姆级教程

在上一篇文章《IOS&#xff1a;Safari无法播放MP4&#xff08;H.264编码&#xff09;》里我们使用了FFmpeg来设置MP4的Profile和Level值&#xff0c;从而转换出适合IOS Safari上播放的MP4文件。本文接着介绍一下FFmpeg的安装&#xff1a; 一、安装过程 &#xff08;1&#xf…

听GPT 讲Rust源代码--compiler(16)

File: rust/compiler/rustc_span/src/lib.rs 在Rust源代码中&#xff0c;rust/compiler/rustc_span/src/lib.rs文件定义了与Rust编译器源代码位置相关的数据结构和功能。 下面是对一些重要结构和枚举类型的详细介绍&#xff1a; SessionGlobals: 代表编译器会话&#xff08;Ses…

AWTK 开源串口屏开发(5) - MCU端 SDK 用法

AWTK 开源智能串口屏&#xff0c;不但开放了串口屏端全部源码&#xff0c;还提供了MCU 端 SDK&#xff0c;大大加快 MCU 软件的开发。本介绍一下 MCU 端 SDK 在不同平台上的用法。 完整示例可以参考下面的几个例子&#xff1a; 普通嵌入式系统 mcu/stm32/hmi_app/hmi_app.c 低…

位移贴图还原电影3D角色

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 位移贴图&#xff08;Displacement Map&#xff09;在电影制作中是一…

老师们居然这样把期末考试成绩发给家长——群发成绩系统的妙用

在现代社会&#xff0c;随着科技的发展和教育的进步&#xff0c;家校之间的沟通方式也在不断更新和完善。其中&#xff0c;群发成绩系统作为一种新型的教育信息化工具&#xff0c;在期末考试成绩的传递方面发挥了重要作用。老师们通过群发成绩系统&#xff0c;将期末考试成绩快…

Linux下Redis6下载、安装和配置教程-2024年1月5日

Linux下Redis6下载、安装和配置教程-2024年1月5日 一、下载二、安装三、启动四、设置开机自启五、Redis的客户端1.Redis命令行客户端2.windows上的图形化桌面客户端 一、下载 1.Redis的官方下载&#xff1a;https://redis.io/download/ 2.网盘下载&#xff1a; 链接&#xff…

PyQt学习笔记

文章目录 1 环境搭建1.1 安装PyQt51.1.1 安装1.1.2 验证 1.2 安装PyInstaller1.3 安装PySide1.4 安装InnoSetup1.5 PyCharm配置外部工具1.5.1 PyCharm配置PyLUpdate1.5.2 PyCharm配置QtLinguist1.5.3 PyCharm配置QtDesigner1.5.4 PyCharm配置PyUIC1.5.5 PyCharm配置PyRCC1.5.6 …

手机上连网络转接app,电脑连接手机,共用网络转接app的办法

方法一&#xff0c;&#xff08;不推荐&#xff09; 因为太简单了所以写一下 电脑安装MuMu模拟器&#xff0c;之后安装网络转接app&#xff0c;这个模拟器设置了从电脑上安装app和&#xff0c;安卓与电脑同步文件夹功能&#xff0c;实现文件共享。所以直接用就可以了。 方法二…

音乐制作软件Studio One mac有哪些特点

Studio One mac是一款专业的音乐制作软件&#xff0c;该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件特点 1. 直观易用的界面&…

C# .Net学习笔记—— 异步和多线程(await/async)

一、介绍 1、控制台测试await/async 2、C# 5.0 .Net framework4.5 CLR4.0 以后才有&#xff0c;本身是一种语法糖 二、基本测试 1、不加await测试。 private async static Task TestAsync() {Log.Info($"当前主线程id{Thread.CurrentThread.ManagedThreadId}"…

全视通-医院智能视讯系统 病房视讯系统解决方案 智能医院对讲系统信息发布系统

医院智能视讯系统解决方案 1、行业背景 对于患者来说现阶段各大医院的住院部大都面临同样的问题&#xff0c;例如患者就医缺乏精准化医疗&#xff0c;缺乏对患者的心理健康引导&#xff0c;缺乏多维度沟通渠道&#xff0c;缺乏多元增值服务等。 对于传统医院住院部病房&am…