鴻飛

导航

 

首先需要知道,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

posted on 2018-12-28 17:15  鴻飛  阅读(317)  评论(0编辑  收藏  举报