mongo中用嵌套结构优势是什么
首先需要知道,MongoDB是NoSQL中的一种,是不直接支持Join的,这是NoSQL的一个特点,不需要直接支持Join,可以将横向扩展以及性能做到更好。
但是这不等于说MongoDB不能做Join所做的事情,为了达到传统数据库join的功能,MongoDB中有2个思路:
Embedding:透过Embedding子文档,达到One to Many的关联关系;这就是您说的嵌套结构;
Referencing:Referencing分为手工Referencing和自动Referencing;通常推荐是手工Referencing,通常是将需要关联的文档的Object_id保存在需要关联的Collection中,也就是说需要关联的Document的Object_id写入时,分别写入在两个需要关联的Collection里面。
上述两个思路,也正是MongoDB的Data Model的主要思路。
那么上述2个思路在具体的运用的时候,怎么区分开呢?
如果能够Embedding的Sub Document,不需要单独被查询,那就直接Embedding;
如果这个Sub Document需要对外提供查询,则单独保存为一个Collection,并使用Referencing与其他collecion关联。
供参考。
Love MongoDB! Have Fun!
引:https://segmentfault.com/q/1010000009109840
mongo中用嵌套结构优势是什么的更多相关文章
- 嵌套结构使用:struc1-struc2-XXX
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- HDU-1495 非常可乐 (嵌套结构体-广搜 对比 一般广搜)
题意 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但 ...
- abap中结构体嵌套结构体。
1: 结构体中嵌套结构体. *&---------------------------------------------------------------------* *& Re ...
- C语言 结构体(嵌套结构体--结构体数组)
//结构体--嵌套结构体和结构体数组 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> ...
- matlab学习笔记12_2创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段
一起来学matlab-matlab学习笔记12 12_2 结构体 创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段 觉得有用的话 ...
- go变量、类的概念以及类的使用方式,嵌套结构体
go变量.类的概念以及类的使用方式,嵌套结构体 Go变量 go使用var声明变量,当声明变量时,这个变量对应的值总是会被初始化.这个值要么用指定的值初始化,要么用零值(即变 量类型的默认值)做初始化. ...
- 递归遍历嵌套结构(多层List)中的元素 ------Python
读Python基础教程(第二版)后看到了这么一个东西,就是利用递归遍历嵌套结构中的元素. 上代码: #encoding:UTF-8 def flatten(nested): try: #不要迭代类似字 ...
- go 下面定义嵌套结构
package main import ( "fmt" ) const ( URL = "http://www.163.com" UID = "adm ...
- Java-if 嵌套结构
import java.util.Scanner; public class ifs{ public static void main(String args[]){ Scanner in=new S ...
随机推荐
- mysql 存储过程的实现原理
一.描述 存储过程是一组可以完成特定功能的SQL语句集,经编译后存储在数据库中 statement语句(DDL.DML.导出及管理语句等).异常处理.流程控制二.创建存储过程 系统做语句分析,如果没有 ...
- C# 6.0:nameof操作符
C# 6.0 引入了一个名为“nameof”的新的操作符,它的作用是接收元素而后返回元素名字.这个操作符能将class和class的所用成员,比如方法.变量以及属性作为参数而后返回一个它们的名字.这避 ...
- 爬虫系列1:Requests+Xpath 爬取豆瓣电影TOP
爬虫1:Requests+Xpath 爬取豆瓣电影TOP [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]: ...
- MySQL MGR+ Consul之数据库高可用方案
背景说明: 基于目前存在很多MySQL数据库单点故障,传统的MHA,PXC等方案用VIP或者DNS切换的方式可以实现.基于数据库的数据强一致性考虑,采用MGR集群,采用consul服务注册发现 ...
- 1-web.xml配置说明
编写第一个Servlet程序 重要的在于如何去配置项目中的web.xml文件 <servlet-class> 设置servlet程序全限定路径 也就是在项目的中路径 <servl ...
- win10更新后出现System.ComponentModel.Win32Exception
win10更新后出现System.ComponentModel.Win32Exception 我的环境是由于“sql server2012 无法连接到WMI提供程序”引起的 参考http://www. ...
- Activation error occured while trying to get instance of type Database,key ""之Oracle
我在发布web项目时好几次好遇到这个问题,查看了别人的说法,感觉还是不能解决,后来发现在发布时bin里面有dll没有打包到发布文件的bin目录中,而这些dll又是在连接Oracle(我选择的Oracl ...
- python 常用技巧
一.字符串与数值的转换 Python中字符串转换为数值: str_num = '99' num = int(str_num) 整型数转换为字符串: num = 99 str_num = str(num ...
- WPF常用TriggerAction用法 (一)
Microsoft.Expression.Interactivity 常用TriggerAction-> CallMethodAction ChangePropertyAction Contro ...
- 【C语言基础】变量
1.什么是变量? 变量的本质就是内存中一段储存空间 2.变量为什么必须初始化? 所谓初始化就是赋值的意思 3.如何定义变量 数据类型 变量名 = 要赋的值 举例子: int i = 3:等价于 int ...