首先需要知道,MongoDB是NoSQL中的一种,是不直接支持Join的,这是NoSQL的一个特点,不需要直接支持Join,可以将横向扩展以及性能做到更好。

但是这不等于说MongoDB不能做Join所做的事情,为了达到传统数据库join的功能,MongoDB中有2个思路:

  1. Embedding:透过Embedding子文档,达到One to Many的关联关系;这就是您说的嵌套结构;

  2. Referencing:Referencing分为手工Referencing和自动Referencing;通常推荐是手工Referencing,通常是将需要关联的文档的Object_id保存在需要关联的Collection中,也就是说需要关联的Document的Object_id写入时,分别写入在两个需要关联的Collection里面。

上述两个思路,也正是MongoDB的Data Model的主要思路。

那么上述2个思路在具体的运用的时候,怎么区分开呢?

  1. 如果能够Embedding的Sub Document,不需要单独被查询,那就直接Embedding;

  2. 如果这个Sub Document需要对外提供查询,则单独保存为一个Collection,并使用Referencing与其他collecion关联。

供参考。

Love MongoDB! Have Fun!

引:https://segmentfault.com/q/1010000009109840

最新文章

  1. Javascript中的数组方法总结
  2. 文章汇总(包括NVMe SPDK vSAN Ceph xfs等)
  3. 安装Nexus
  4. C#中的斜变性和逆变性的详解
  5. javascrit2.0完全参考手册(第二版) 第2章第3节 变量
  6. Unix网络编程--卷二:FAQ
  7. Chrome的Crash Report服务
  8. 有用C函数集锦
  9. adb调试命令详解-2016.02.01
  10. hdu3336
  11. WCF 之 OperationContract
  12. SRM 584 DIV1
  13. CodeForces 566D 并查集集合合并
  14. #图# #最大生成树# #kruskal# ----- OpenJudge 799:Heavy Transportation
  15. HTML5—canvas绘制图形(1)
  16. The summary of Interview
  17. vue-cli · Failed to download repo vuejs-templates/webpack: connect ETIMEDOUT 13.229.188.59:443
  18. a标签下载
  19. python django基础二URL路由系统
  20. zabbix-agents客户端安装

热门文章

  1. 忘记秘密利用python模拟登录暴力破解秘密
  2. Pyrit help
  3. 记一次解决cmd中执行java提示"找不到或无法加载主类"的问题
  4. log4j实现日志的输出
  5. https://www.oschina.net/project/lang/19/java
  6. Appium自动化学习1
  7. Centos7 系统下怎么更改apache默认网站目录
  8. Exp4 恶意代码分析 20164313 杜桂鑫
  9. python使用xlrd, xlwt读取excel文件和 写入excel文件
  10. Android APK反编译(二)