本文共 3122 字,大约阅读时间需要 10 分钟。
NoSQL(No Only SQL)数据库是一项全新的数据库革命性运动,旨在为处理非关系型数据提供灵活、高效的解决方案。与传统的关系型数据库(如MySQL、Oracle)不同,NoSQL数据库能够更好地适应高并发读写、海量数据存储以及高扩展性需求的应用场景。
高并发读写能力
NoSQL数据库设计时考虑了高并发场景,能够在短时间内处理大量的读写操作,非常适合像电商、社交网络等实时数据处理的应用。高效率存储与访问
NoSQL数据库通常采用键值存储机制,能够以更高的效率存储和检索数据,特别适合处理大量的结构化数据。高可扩展性与高可用性
NoSQL数据库支持分布式架构,能够通过添加更多节点提升系统性能,确保服务的稳定性和可靠性。面向文档存储
MongoDB将数据存储为文档,数据结构由键值对组成,类似于JSON格式,操作简便且灵活。灵活的查询能力
MongoDB支持复杂的查询操作,能够通过JSON表达式进行文档内嵌对象及数组的高效检索。分布式架构支持
MongoDB能够将数据分片存储在多个节点上,支持高扩展性,同时提供强大的数据镜像功能。内置的Map/Reduce功能
Map和Reduce是MongoDB处理大规模数据的重要工具,能够对数据进行批量处理和聚合操作。支持丰富的数据类型
MongoDB支持多种数据类型,包括字符串、整数、布尔值、日期、数组等,能够满足不同应用的数据存储需求。高性能与易用性
MongoDB安装简单,运行效率高,能够在高负载环境下保持稳定性能。拉取MongoDB镜像:
docker pull mongo:latest
创建并启动容器:
docker run -d --restart=always -p 27017:27017 --name mymongo -v /data/db:/data/db mongo
进入容器并使用MongoDB客户端操作:
docker exec -it mymongo /bin/bash
在终端输入以下命令查看数据库列表:
mongo > show dbs
切换/创建数据库:
use test
创建集合:
db.createCollection("users")插入数据:
db.users.insert({ name: "张三", age: 30 })查询数据:
db.users.find()
更新数据:
db.users.update({ "name": "张三" }, { $set: { age: 40 } })删除数据:
db.users.remove({ _id: "1234567890abcd" })聚合操作:
db.articles.aggregate([ { $group: { _id: "$by_user", num_tutorials: { $sum: 1 } } }])Spring Boot提供了MongoTemplate和MongoRepository两种与MongoDB交互的接口。MongoTemplate操作灵活,适合复杂查询;MongoRepository基于MongoDB的核心查询操作,操作简单。
初始化Spring Boot项目:
使用Spring Initializr快速创建项目,设置包名为com.example,依赖项包括spring-boot-starter-data-mongodb和spring-boot-starter-web。修改pom.xml添加依赖:
org.springframework.boot spring-boot-starter-data-mongodb org.springframework.boot spring-boot-starter-web
配置MongoDB地址:
在application.properties中添加:spring.data.mongodb.uri=mongodb://localhost:27017/test
MongoTemplate开发CRUD定义实体类:
@Data@Document(collection = "users")public class User { @Id private String id; private String name; private Integer age; private String email; private Date createDate;}实现CRUD操作:
插入:
User user = new User();user.setName("张三");user.setAge(30);mongoTemplate.insert(user);查询:
ListuserList = mongoTemplate.findAll(User.class);
更新:
User user = mongoTemplate.findById("1234567890abcd", User.class);user.setAge(40);mongoTemplate.save(user);删除:
mongoTemplate.remove(new Query(Criteria.where("_id").is("1234567890abcd")), User.class);MongoRepository开发CRUD定义仓库接口:
@Repositorypublic interface UserRepository extends MongoRepository{}
实现CRUD操作:
插入:
User user = new User();user.setName("张三");userRepository.save(user);查询:
ListuserList = userRepository.findAll();
更新:
User user = userRepository.findById("1234567890abcd").get();user.setAge(40);userRepository.save(user);删除:
userRepository.deleteById("1234567890abcd");MongoDB作为一种高效的NoSQL数据库,适合处理大规模的非关系型数据存储和高并发操作。而Spring Boot与MongoDB的集成,使得开发者能够快速构建基于MongoDB的数据访问层,实现对数据的高效管理和操作。通过以上内容,可以快速上手MongoDB的使用,并在Spring Boot项目中实现与MongoDB的交互。
转载地址:http://rsoq.baihongyu.com/