博客
关于我
mongo笔记07( MongoDB 关系)
阅读量:498 次
发布时间:2019-03-07

本文共 951 字,大约阅读时间需要 3 分钟。

MongoDB中的关系类型与数据表达方式

在MongoDB中,文档之间可以建立多种关系,这些关系可以通过嵌入和引用两种方式实现。了解不同关系类型及其适用场景,有助于合理设计数据库架构。

1:1关系(One-to-One)这种关系适用于父子级的数据关系。例如,可以选择将地址嵌入到用户文档中。这种方式保持数据在一个文档中,便于操作。

1:N关系(One-to-Many)当一个用户拥有多个地址时,选择嵌入式方式存储地址。例如,用户的contact字段可以直接包含多个地址。这种方式适合频繁查询地址列表的情况。

N:1关系(Many-to-One)通常用于关联参考数据。例如,可以将地址的《id》作为引用字段存储在用户文档中。这种方式适合需要查询经常访问地址信息的场景。

N:N关系(Many-to-Many)这种关系适用于需要双向关联的场景。例如,可以将用户地址的《id》放在两个文档中独立存储,并通过联合索引等方式实现关联。

关系方式选择的关键在于数据的使用场景。嵌入式方式优点是查询简单,但缺点是数据冗余,难以维护。引用式方式则适用于逆向查询和数据独立存储的需求。

典型案例:用户与地址关系假设我们有User和Address两个集合:

用户集合:{"_id": ObjectId(),"name": "Tom Benzamin","contact": "987654321","dob": "01-01-1991","address_ids": [ObjectId()]}

地址集合:{"_id": ObjectId(),"building": "22 A, Indiana Apt","pincode": 123456,"city": "Los Angeles","state": "California"}

通过这种方式,用户文档直接引用地址的《id》,反向查询则需要在地址文档中建立索引。这种设计既节省存储空间,又提高了查询效率。

dehydration这个概念是数据库性能优化的关键点。插入式存储在本地文档中,查询则需要解除嵌入关系。这在填充缓存或构建前台视图时特别重要。

合理选择关系类型和存储方式,对于数据库性能和架构的设计都有重要影响。在实际项目中,需要根据具体需求评估哪种方式更适合。

转载地址:http://jxzjz.baihongyu.com/

你可能感兴趣的文章
SpringBoot中项目启动及定时任务缓存数据库常用数据至内存变量并转换后高频调用
查看>>
Qt知识: 画刷风格
查看>>
QT的OpenGL渲染窗QOpenGLWidget Class
查看>>
QT的C++程序加载动态链接库DLL(Linux下是so)的方式
查看>>
QT界面操作1:如何跟踪鼠标位置?
查看>>
Qt环境搭建(Visual Studio)
查看>>
QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)...
查看>>
QT样式表——url路径
查看>>
QT数据库(三):QSqlQuery使用
查看>>
QT教程5:消息框
查看>>
SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
查看>>
pom.xml中提示web.xml is missing and <failonmissingw>...
查看>>
Pomelo开发中Web客户端开发API简介
查看>>
QT教程2:QT5的体系构架
查看>>
PON架构(全光网络)
查看>>
PoolingHttpClientConnectionManager原理剖析
查看>>
QT教程1:ubuntu18.04安装QT5
查看>>
POP-一个点击带有放大还原的动画效果
查看>>
POP3 协议在计算机网络中的优缺点
查看>>
qt批量操作同类型控件
查看>>