mongodb跨集合查询_MongoDB数据模型设计

2558d671d902683682e6442acceb0c02.png

124128d0243691d8e3b33710dc357f50.png

MongoDB Manual (Version 4.2)> Data Models > Data Modeling Concepts > Data Model Design

有效的数据模型支持您的应用程序需求。文档结构的关键考虑因素是嵌入或使用引用的决定。本次我们将从以下两方面来了解MongoDB数据模型设计。

  • 嵌入式数据模型

  • 规范化数据模型

嵌入式数据模型

使用MongoDB,您可以将相关数据嵌入到单个结构或文档中。这些模式通常被称为“非规范化”模型,并利用MongoDB的丰富文档。参考下图:

6afac3f53aa6f9f3dd168cb0b01e5d1b.png

嵌入式数据模型允许应用程序在同一个数据库记录中存储相关信息。因此,应用程序可能需要发出更少的查询和更新来完成常见操作。

通常,在以下情况下使用嵌入式数据模型:

  • 实体之间存在“包含”关系。见与嵌入文档建立一对一关系模型。

  • 实体之间有一对多的关系。在这些关系中,“多个”或子文档始终与“一个”或父文档一起出现或在其上下文中查看。见与嵌入文档建立一对多关系模型。

一般来说,嵌入为读取操作提供了更好的性能,并且能够在单个数据库操作中请求和检索相关数据。嵌入式数据模型使得在单个原子写入操作中更新相关数据成为可能。

要访问嵌入文档中的数据,请使用点符号 “访问”嵌入文档。有关访问数组和嵌入文档中的数据的更多示例,请参见查询数组中的数据和 查询嵌入文档中的数据。

嵌入式数据模型和文档大小限制

MongoDB中的文档必须小于BSON文档的最大大小

对于大容量二进制数据,请考虑GridFS。

规范化数据模型

规范化数据模型使用文档之间的 引用来描述关系。

402d8badab888f5338136e4b88145c1d.png

通常,使用规范化数据模型:

  • 当嵌入将导致重复数据,但不会提供足够的读取性能优势,超过重复的影响。

  • 表示更复杂的多对多关系。

  • 为大型分层数据集建模。

要加入集合,MongoDB提供聚合阶段:

  • $lookup (从MongoDB 3.2开始提供)

  • $graphLookup(从MongoDB 3.4开始提供)

MongoDB还提供了跨集合联接数据的引用。

对于规范化数据模型的示例, 见 使用文档引用建立一对多关系模型。

各种树模型的示例, 见 模型树结构。

原文链接:

https://docs.mongodb.com/manual/core/data-model-design/

译者:张鹏  MongoDB中文社区翻译小组成员

往期发布:

*查看更多翻译请移步至MongoDB中文社区网站(mongoing.com)查阅中文用户手册。

The mongo Shell

mongo 命令行

配置 mongo shell

查看 mongo shell帮助文档

MongoDB CRUD操作

— MongoDB中的CRUD操作

—— MongoDB读隔离性,一致性与近因性

批量写操作

读关注

写关注

数据模型

— MongoDB数据建模介绍

事务

事务

事务操作

索引

2dsphere索引

哈希索引

索引属性

在集合上创建索引

量索引使用情况

安全

安全检查列表

启用访问控制

身份验证

审计

—— 配置审计

—— 配置审计过滤器

—— 系统事件审计消息

网络和配置强化

安全参考

—— system.roles 集合

—— system.users 集合

—— 资源文档

—— 权限操作

—— 附录A:用于测试的 OpenSSl CA 证书

—— 附录B:用于测试的OpenSSL服务器证书

—— 附录C:用于测试的OpenSSL客户端证书

复制

副本集成员

副本集Oplog

副本集数据同步

副本集部署架构

分片

分片键

—— 在分片集群中拆分数据块chunks

哈希分片

范围分片

管理

产品说明

操作检查表

开发检查表

性能

— 配置和维护

备份方法

存储

—— WiredTiger存储引擎

—— 内存存储引擎

常见问答:MongoDB 存储

d4eed5e85731fa0fb5516c9127d112b9.png

喜欢我们,

分享、点赞、在看三连哦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值