嘉兴市住房和城乡建设局门户网站网站建设语录

当前位置: 首页 > news >正文

嘉兴市住房和城乡建设局门户网站,网站建设语录,环保网站模板 html,做网站公司会场主持台词#x1f3dd;️ 博主介绍 大家好#xff0c;我是一个搬砖的农民工#xff0c;很高兴认识大家 #x1f60a; ~ #x1f468;#x1f393; 个人介绍#xff1a;本人是一名后端Java开发工程师#xff0c;坐标北京 ~ #x1f389; 感谢关注 #x1f4d6; 一起学习 ️ 博主介绍 大家好我是一个搬砖的农民工很高兴认识大家 ~ 个人介绍本人是一名后端Java开发工程师坐标北京 ~ 感谢关注 一起学习 一起讨论 一起进步 ~ 作者水平有限欢迎各位大佬指正留言相互学习进步 ~ 目录 ️ 博主介绍1. 概述 2. 数据模型与存储 3. MongoDB 常用命令 4. MongoDB 索引 5. MongoDB的使用场景 6. SpringBoot 集成 MongoDB 在数据库的世界里MongoDB和MySQL是两种非常流行且功能强大的数据库系统但它们各自的设计哲学、应用场景以及数据模型存在显著差异。对于数据库初学者来说了解这些差异有助于更好地选择适合自己的工具并深入理解数据库的基本原理。本文将带领你踏入MongoDB的世界并通过与MySQL的对比帮助你快速上手MongoDB。

  1. 概述
    ⭐ MongoDB MongoDB是一个基于分布式文件存储的开源NoSQL数据库系统由C编写而成。与传统的关系型数据库不同MongoDB采用了面向文档的存储方式支持“无模式”的数据建模能够存储比较复杂的数据类型。这使得MongoDB在处理半结构化和非结构化数据时表现得尤为出色如日志、社交媒体数据等。MongoDB属于NoSQLNot Only SQL数据库的一种。它采用键值存储的方式来存储数据是一种类似于JSON 的 格式叫BSONBinary JSON,虽然我们平时看到的文档都是JSON格式呈现但在内部是以BSON格式存储的。MongoDB特别适合处理大规模数据集、高并发读写、以及需要灵活数据模型的应用场景。⭐ MySQLMySQL是一个流行的关系型数据库管理系统RDBMS使用标准的SQL语言来管理数据。它遵循ACID原子性、一致性、隔离性、持久性原则适合需要事务处理、强一致性保证和复杂查询的应用场景。

  2. 数据模型与存储 ✨ MongoDB的数据模型 ⭐ 数据库Database包含多个集合类似于关系型数据库中的数据库。⭐ 集合Collection集合是文档的集合相当于关系型数据库中的表但不需要定义结构。⭐ 文档DocumentMongoDB的基本单位是文档文档是JSON格式的键值对集合其内部格式为BSON。一个文档可以嵌套其他文档或数组非常灵活。 ✨ MySQL的数据模型 ⭐ 数据库Database数据库是表的容器提供了命名空间、访问控制和数据完整性的机制⭐ 表Table由行和列组成的二维数据结构每列都有固定的数据类型和约束。⭐ 行Row表中的一条记录。⭐ 列Column表中的字段定义了数据的类型和属性。

  3. MongoDB 常用命令
    ⭐ 启动MongoDB首先进入MongoDB目录下创建data/db文件夹然后进入bin目录下面执行 mongod –dbpath../data/db⭐ 连接MongoDB进入MongoDB的bin目录下执行 mongo –hostlocalhost –port27017⭐ 创建数据库use 数据库 示例use mydb。如果mydb不存在则创建它存在则进入该数据库 ⭐ 删除数据库db.dropDatabase()⭐ 查看当前数据库db⭐ 查看所有数据库show dbs⭐ 创建集合db.createCollection(集合) 示例db.createCollection(“mycollection”) ⭐ 删除集合db.集合.drop() 示例db.mycollection.drop() ⭐ 插入文档(单个)db.集合.insert(json数据) 示例db.collection_08.insert({“name”:“小张”,“age”:18}) ⭐ 插入文档(多个)db集合.insertMany([json数据]) || db集合.insert([json数据]) 示例db.collection_08.insertMany([{“name”:“小张”,“age”:18},{“name”:“小张”,“age”:18,“hight”:“178cm”}]) ⭐ 查询文档db.集合.find()示例db.collection_08.find()⭐ 查询指定字段db.集合名.find({}, {键名1: 1, 键名2: 0})1表示显示该字段0表示不显示⭐ 条件查询 等于db.集合名.find({键名: 值}) 不等于db.集合名.find({ 键名: { \(ne: 值 }}) AND条件db.集合名.find({键名1: 值1, 键名2: 值2}) OR条件db.集合名.find({\)or: [{键名1: 值1}, {键名2: 值2}]}) 比较条件大于、小于等db.集合名.find({键名: {\(gt: 值}})其中\)gt表示大于\(lt表示小于\)gte表示大于等于\(lte表示小于等于 IN条件db.集合名.find({键名: {\)in: [值1, 值2]}}) NOT IN条件db.集合名.find({键名: {\(nin: [值1, 值2]}}) 模糊匹配包含db.集合名.find({字段名: /值/}) 正则表达式匹配以某个值开头/结尾db.集合名.find({字段名: /^值/}) 或 db.集合名.find({字段名: /值\)/}) ⭐ 删除所有文档db.集合名.remove({})⭐ 删除匹配条件的文档db.集合名.remove({键名: 值})⭐ 更新匹配到的第一条文档db.集合名.updateOne({查询条件}, {\(set: {更新内容}})⭐ 更新匹配到的所有文档db.集合名.updateMany({查询条件}, {\)set: {更新内容}})⭐ 统计db.集合名.count() || db.集合名.count({查询条件})⭐ 排序db.集合名.find().sort({键名: 1})1为升序-1为降序⭐ 分页db.集合名.find().skip(N).limit(M)跳过N条数据限制返回M条数据

  4. MongoDB 索引
    ⭐ 创建单一索引db.collection.createIndex({ fieldName: 1 }) collection 表示集合名称fieldName 是你想要索引的字段名1 表示升序索引-1 表示降序索引。 ⭐ 创建复合索引db.collection.createIndex({ fieldName1: 1, fieldName2: -1 }) 复合索引可以基于多个字段的顺序来优化查询。 ⭐ 查看索引db.collection.getIndexes()⭐ 删除索引db.collection.dropIndex({ fieldName: 1 }) || db.collection.dropIndex(索引名称)⭐ 删除所有索引除了 _id 索引db.collection.dropIndexes()⭐ 索引评估db.collection.find({ fieldName: value }).explain() 查询语句后面加 explain() 下面两张图片第一张是没有使用到索引第二张是使用到了索引。

  5. MongoDB的使用场景
    大数据存储和处理MongoDB适用于存储和处理大量的非结构化数据如日志数据、社交媒体数据、传感器数据等。由于其灵活的文档模型MongoDB能够轻松地处理这些复杂且多变的数据结构。实时分析和报表MongoDB的数据模型和查询语言MongoDB Query Language, MQL支持复杂的聚合操作和数据分析适合进行实时数据分析和报表生成。高并发读写MongoDB的异步非阻塞I/O模型和高性能的内存映射文件技术使其能够应对高并发的读写请求适用于需要处理大量用户访问和数据更新的应用场景。内容管理系统CMSMongoDB可以用作内容管理系统的后端数据库存储和管理大量的文章、图片、视频等内容。社交网络应用MongoDB的灵活数据模型和高性能读写能力使其成为社交网络应用的理想选择能够存储用户信息、社交关系、消息等数据。物联网IoT应用MongoDB可以存储和处理大规模的物联网设备生成的数据如传感器数据、设备状态等为物联网应用提供强大的数据支持。

  6. SpringBoot 集成 MongoDB ⚡ 源码地址SpringBoot 集成 MongoDB 引入Maven依赖 !–父依赖dependency可以不加依赖版本–parentartifactIdspring-boot-starter-parent/artifactIdgroupIdorg.springframework.boot/groupIdversion2.2.4.RELEASE/version/parentdependencies!– mongodb –dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactId/dependency!– spring-boot –dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!– 单元测试 –dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!– lombok –dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency/dependencies添加yaml配置文件 server:port: 8082spring:data:mongodb:host: localhostdatabase: test_02port: 27017# 也可以直接使用uri连接

    uri: mongodb://localhost:27017/test_02创建实体类

    Data Document(collection comment) public class CommentEntity {Idprivate String id;// 点赞数Field(likeNum)private Integer likeNum;// 内容private String comment;// 父Idprivate String parentId; } 创建Dao public interface CommentRepository extends MongoRepositoryCommentEntity, String {/*** 根据parentId获取数据* param parentId* return*/ListCommentEntity findByParentId(String parentId);} 创建Test进行测试 RunWith(SpringRunner.class) // 如果不放在swp.basis.service目录下必须指定BasisApplication启动类 SpringBootTest(classes BasisApplication.class) public class CommentServiceTest {Autowiredprivate CommentRepository commentRepository;Testpublic void test(){System.out.println(commentRepository.findAll());System.out.println(commentRepository.findByParentId(66ed29b0bbf12138ee50b657));} }