MongoDB 核心概念与数据模型解析

简介: MongoDB 是一款高性能、无模式的文档型数据库,采用 BSON 格式存储,支持嵌套结构与丰富数据类型。以文档为核心,兼容 JSON 并扩展日期、二进制等类型,提供高可用、高扩展与高性能的现代数据解决方案。

MongoDB 是一款开源、高性能、无模式的文档型数据库,属于 NoSQL 家族中最接近关系型数据库(如 MySQL)的成员。它以 BSON(Binary JSON) 作为底层存储格式,支持复杂嵌套结构,极大提升了开发效率与数据表达能力。

基本术语对照(vs MySQL)

SQL 概念 MongoDB 概念 说明
Database Database 数据库
Table Collection 表 → 集合
Row Document 行 → 文档(JSON-like 对象)
Column Field 列 → 字段
Index Index 索引
Table Joins 嵌入文档 / 引用 不支持 JOIN,通过内嵌文档替代
Primary Key _id 字段 自动为主键,类型为 ObjectId

数据模型:以文档为核心

MongoDB 的最小存储单位是 文档(Document),本质上是一个键值对组成的 BSON 对象。例如:

{
  "_id": ObjectId("6789abcd1234"),
  "name": "张三",
  "age": 28,
  "hobbies": ["读书", "跑步"],
  "address": {
    "city": "北京",
    "geo": [116.4, 39.9]
  }
}

这种结构天然支持 嵌套对象数组,非常适合表达层次化、半结构化数据。

BSON:超越 JSON 的二进制格式

BSON(Binary Serialized Document Format)是 MongoDB 的数据存储格式,兼容 JSON 并扩展了更多类型:

数据类型 描述
string UTF-8 字符串
ObjectId 12 字节唯一 ID,常用于主键
boolean true / false
array 有序列表
object 嵌套文档
date 日期时间(JSON 原生不支持)
binary data 二进制数据(如图片、文件)
null 空值
regex 正则表达式(如 /abc/i
code 可存储 JavaScript 函数(慎用)

注意:MongoDB Shell 中部分类型(如 32/64 位整数)会自动转为浮点数,生产环境应通过驱动程序正确处理类型。

MongoDB 的核心优势

  • 高性能:嵌入式模型减少 I/O;支持多种存储引擎(WiredTiger、In-Memory 等);提供文本索引、TTL 索引、地理空间索引。
  • 高可用:通过 副本集(Replica Set) 实现自动故障转移与数据冗余。
  • 高扩展:原生支持 分片(Sharding),可将数据水平分布到多个节点,轻松应对 PB 级数据。
  • 丰富查询:支持 CRUD、聚合管道、地理查询、全文搜索等高级功能。

总结:MongoDB 以灵活的文档模型、强大的扩展能力和丰富的查询语言,为现代应用提供了高效、可伸缩的数据存储解决方案。

相关文章
|
1天前
|
JSON 前端开发 安全
用自定义注解 + 拦截器实现登录鉴权
通过自定义注解 `@Login` 结合 Spring 拦截器,实现声明式登录校验。无需重复编码,自动拦截未登录请求,提升代码可维护性与安全性,适用于前后端分离架构的权限控制实践。
|
1天前
|
测试技术
OAuth2.0测试
本节演示授权码模式测试流程:通过访问指定URL跳转至SpringSecurity登录页,使用系统账户登录后,授权read/write权限,获取授权码并申请访问令牌token,完成OAuth2认证全过程。
OAuth2.0测试
|
1天前
|
存储 安全 数据安全/隐私保护
认识OAuth2.0
OAuth2.0是一种开放授权协议,允许第三方应用在用户授权下安全访问资源,无需获取用户账号密码。其核心是通过令牌(token)机制实现权限控制,广泛用于第三方登录、服务间资源调用等场景。支持多种授权模式,其中授权码模式最安全,适用于Web和移动应用,如微信、QQ登录即基于此模式实现。
认识OAuth2.0
|
1天前
|
安全 Java 数据库
RememberMe基本用法
本文介绍Spring Security中RememberMe功能的实现原理及优化方案。通过配置自动登录,用户勾选后可持久化会话,避免重复登录。系统通过remember-me令牌识别用户,但存在安全风险。为提升安全性,建议将Token持久化至数据库,并增加二次校验机制,防止令牌泄露导致的安全问题。
RememberMe基本用法
|
1天前
|
数据安全/隐私保护
RememberMe简介及用法
RememberMe功能并非简单保存用户名密码,而是服务器端维持登录状态的机制。用户关闭浏览器后重新打开,仍可保持登录,提升体验,区别于传统Session会话需重复登录的方式。
|
1天前
|
安全 Java 数据库
自定义认证实现流程
本文介绍如何在Spring Security中实现自定义用户认证。首先创建自定义UserDetailsService,实现loadUserByUsername方法,从数据库加载用户信息与权限;然后在SecurityConfig中注册该服务,配置登录逻辑与权限规则。通过整合持久层,完成基于数据库的认证流程,重启项目后即可生效。
自定义认证实现流程
|
1天前
|
NoSQL 前端开发 BI
MongoDB 分页、排序与统计查询技巧
MongoDB 提供 `count()`、`sort()`、`skip()`、`limit()` 等链式方法,高效实现数据统计、分页与排序。支持多字段排序、条件分页,执行顺序固定为:先排序 → 再跳过 → 后限制数量,适用于各类业务场景的数据查询处理。(239字符)
|
1天前
|
缓存 安全 数据挖掘
数据库设计三范式:从理论到实战
本文深入浅出讲解数据库三范式(1NF、2NF、3NF),通过真实案例解析各范式的核心要求与常见误区,强调“范式是工具而非教条”,帮助开发者在规范性与性能间找到平衡,构建合理、易维护的数据模型。
|
1天前
|
存储 JSON NoSQL
MongoDB 文档的增删改查实战
本文以“文章评论”为例,介绍MongoDB文档的增删改查操作。涵盖单条与批量插入、条件查询、投影筛选、局部更新与原子增减,以及安全删除等核心操作,助你掌握高效数据管理技巧。
|
1天前
|
SQL 安全 Java
了解 SQL 注入:原理、危害与防御
SQL注入是Web安全头号威胁,攻击者通过恶意SQL代码窃取、篡改或删除数据。本文详解其原理、危害及防御方案,强调预编译、输入校验、最小权限等核心防护措施,助你筑牢数据库安全防线。