MongoDB-树形结构

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 在 MongoDB 中我们除了可以使用 ‘内嵌式结构’ 和 ‘规范式结构’ 来表示数据的关系以外, 由于MongoDB数据的灵活性, 我们还可以使用’树形结构’来表示数据之间的关系。

树形结构

在 MongoDB 中我们除了可以使用 ‘内嵌式结构’ 和 ‘规范式结构’ 来表示数据的关系以外, 由于MongoDB数据的灵活性, 我们还可以使用’树形结构’来表示数据之间的关系。


树形结构概述

Database
              |
    |--------------------|
Relational           No-Relational
    |          |-----------|-------------|
  MySQL      Key-Value                Document
               |                         |
             Redis                    MongoDB



对于经常需要查询子节点的数据可以存储如以下的数据结构来表示:

{name:'Database', parent:null}
{name:'No-Relational', parent:'Database'}
{name:'Document', parent:'No-Relational'}
{name:'MongoDB', parent:'Document'}
{name:'Key-Value', parent:'No-Relational'}
{name:'Redis', parent:'Key-Value'}


例如: 我们要查询非关系型数据库有几种类型, 我们可以使用 find({parent:'No-Relational'})


对于经常需要查询父节点的数据可以存储如下的数据结构来表示:

{name:'Database', children:['Relational', 'No-Relational']}
{name:'No-Relational', children:['Key-Value', 'Document']}
{name:'Document', children:['MongoDB']}
{name:'MongoDB', children:[]}


例如: 我们要查询MongoDB是什么类型的的数据, 我们可以使用 find({children:{$in:['MongoDB']}})


对于经常查询祖先或者后代节点的数据的存储结构表示:

{name:'Database', ancestors:[]}
{name:'No-Relational', ancestors:['Database']}
{name:'Document', ancestors:['Database', 'No-Relational']}
{name:'MongoDB', ancestors:['Database', 'No-Relational', 'Document']}


例如: 我们要查询MongoDB的祖先有哪些, 我们可以使用 find({name:'MongoDB'}),我们要查询Database的后代有哪些, 我们可以使用 find({ancestors:{$in:['Database']}}})


还有一种就是结合深度优先或者广度优先算法来实现树形结构,这里不介绍。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
7月前
|
存储 NoSQL MongoDB
【MongoDB】MongoDB 如何处理复杂的数据结构?
【4月更文挑战第2天】【MongoDB】MongoDB 如何处理复杂的数据结构?
|
2月前
|
机器学习/深度学习 NoSQL MongoDB
MongoDB 关系
10月更文挑战第20天
32 0
|
4月前
|
存储 NoSQL 关系型数据库
1-MongoDB相关概念
1-MongoDB相关概念
|
7月前
|
存储 NoSQL 关系型数据库
MongoDB 的数据关系
MongoDB是面向文档的NoSQL数据库,以其灵活的数据模型区别于传统关系型数据库。数据以JSON-like文档形式存储,文档可嵌套并存储在集合中。其特点包括:嵌入式文档、弱类型架构(无模式)、无连接性及引用关系。MongoDB支持动态添加字段,通过嵌入或引用处理文档关联,适应各种数据结构和复杂关系,适合不同应用场景。
|
7月前
|
存储 NoSQL MongoDB
【MongoDB】MongoDB 索引结构底层原理分析
【4月更文挑战第1天】【MongoDB】MongoDB 索引结构底层原理分析
|
7月前
|
NoSQL 数据挖掘 BI
【MongoDB】MongoDB 聚合框架
【4月更文挑战第3天】【MongoDB】MongoDB 聚合框架
|
7月前
|
存储 NoSQL 关系型数据库
MongoDB-一对一关系
优势 一次查询就能得到所有数据 劣势
81 0
MongoDB-分片结构
分片集群结构 • 分片服务器: 用于保存集合中的一部分数据 • 配置服务器: 用于保存分片数据的数据段和数据范围 • mongos 路由(路由服务器): 用于分发请求到保存对应数据的分片服务器上
79 0
|
NoSQL MongoDB Python
一日一技:如何正确获取 MongoDB 集合里面的最后一条数据
一日一技:如何正确获取 MongoDB 集合里面的最后一条数据
748 0