在 SQL 中,我们经常会提起:一对一,一对多,多对多,而在 MongoDB 这样的数据库中,我们可以分为新的类型:少和多,之后我们会根据少和多进行一些数据库设计的详细分析,先来简单根据之前的介绍引用一下《MongoDB 权威指南》中的表格:

更适合内嵌 更适合引用
子文档较小 子文档较大
数据不会定期改变 数据经常改变
最终数据一致即可 中间阶段的数据必须一致
文档数据小幅增加 文档数据大幅增加
数据通常需要执行二次查询才能获得 数据通常不包含在结果中
快速读取 快速写入

通常来说,「少」的关系对于内嵌更为合适,「多」则对于引用更加合适:比如文章和标签的关系可能是多对少,文章和评论的关系可能是一(少)对多。

所以我们的 Tags 可以内嵌,而评论则使用引用更好。

由于 MongoDB 的文档会自动扩充大小,如果太过频繁的让 MongoDB 产生文档移动,将会造成性能问题,在设计阶段,可以预留足够的空间,提高写入速度。

mongodb哪些情况适用内嵌,哪些情况适用引用相关推荐

  1. MongoDB进阶-内嵌文档查询

    作为非关系型数据库中的佼佼者,MongoDB一大优势在于能够在一条文档中存储对象类型的数据,适当增加冗余来让数据库更好用.文档中一个对象类型的字段在MongoDB中被称为内嵌文档(Embedded), ...

  2. MongoDB操作内嵌文档

    作为非关系型数据库中的佼佼者,MongoDB一大优势在于能够在一条文档中存储对象类型的数据,适当增加冗余来让数据库更好用.文档中一个对象类型的字段在MongoDB中被称为内嵌文档(Embedded) ...

  3. 给妹子讲python-S01E19解析Python内嵌作用域与函数闭包

    欢迎关注公众号:python数据科学家 [要点抢先看] 1.python中独特的嵌套函数 2.嵌套作用域与闭包现象 3.nonlocal关键字与内嵌作用域变量修改 前情回顾,上一节我们介绍了变量的LE ...

  4. 针对于iosAPP内嵌H5,-webit-overflow-scrolling:touch;产生空白情况

    问题描述:一个内嵌IOSAPP的H5页面,长页面,大概1.6个屏幕高度,由于有列表滑动起来很不流畅,所以用了-webit-overflow-scrolling:touch;这个只针对ios端的物理滚动 ...

  5. Android内嵌H5,安卓手机返回键点击无反应、苹果手机返回键正常情况解决方案

    定义一个返回APP的方法函数如下: function backForApp(delta = 1) {if (getCurrentPages().length > 1) {uni.navigate ...

  6. KVM虚拟机内无agent情况下的监控方法

    KVM虚拟机内无agent情况下的监控(ceilometer实现) 今天看到大家在群里讨论KVM虚拟机的监控问题,而且是要求VM内无agent情况下的监控.这方面确实没有深入研究,但尚有些openst ...

  7. 【知识小课堂】 mongodb 之字段中的【 数组】、【内嵌文档】

    一.介绍 MONGODB 的表结构 很灵活 .主要还是因为 字段中可以包含 [ 数组].[内嵌文档]. 现在简单介绍一下 字段中的[ 数组].[内嵌文档]相关的一些操作 (为了方便理解,还是以表来理解 ...

  8. mongodb查询内嵌文档

    mongodb查询内嵌文档 假设有这样一个文档: db.XXX.remove(); db.XXX.insert({"id":1, "members":[{&qu ...

  9. python字典导入mongodb_Python语言生成内嵌式字典(dict)-案例从python提取内嵌json写入mongodb...

    本文主要向大家介绍了Python语言生成内嵌式字典(dict)-案例从python提取内嵌json写入mongodb,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 从mongo查 ...

最新文章

  1. 历史上最伟大的方程 (托尼·赖斯 著)
  2. python【蓝桥杯vip练习题库】ALGO-201大等于n的最小完全平方数
  3. Redis的两种持久化方式
  4. 从C#到TypeScript - Generator
  5. Python基础入门_5面向对象基础
  6. 在EI中查找某作者的会议论文是否被收录
  7. Bookmarklet
  8. 树莓派的使用(一、安装系统)
  9. 【BZOJ2460】元素,线性基+贪心
  10. 【Elasticsearch】Elasticsearch:聚合 操作
  11. Qt4_使用SAX读取XML
  12. miui怎么用第三方图标包_小米用户必备,不能错过的免费MIUI主题
  13. 在vue项目中使用阿里巴巴矢量图标库
  14. 设计模式六大原则(3):里氏替换原则
  15. Keil5使用AC6编译器
  16. 双目是个词吗_描写眼睛的词语3个字
  17. [Office] WPS Excel通过添加宏实现多张表格合并
  18. 实战详解Maven部署(deploy)jar到私有仓库Nexus及如何引入私仓jar包
  19. 张一鸣这条微博,就……有点害人不浅
  20. 怎么申请电子邮箱?电子邮箱号码如何申请?

热门文章

  1. [css] 请举例说明css有哪些不可继承的属性?
  2. [css] 使用rem布局时怎样合理设置根标签字体大小?
  3. [css] 你们团队中css的class命名采用的是什么方式呢?下划线还是横线还是驼峰?
  4. 工作311:uni-携带当前参数跳转页面传值
  5. 前端学习(2864):简单秒杀系统学习之优化js
  6. [js] 手写一个trim()的方法
  7. “睡服”面试官系列第八篇之iterator(建议收藏学习)
  8. 前台关于跨域的警告A cookie associated with a cross-site resource at .........,代理服务器
  9. ES6之Module 的加载实现(1)
  10. Python基础入门_5面向对象基础