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']}}})

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

posted @   BNTang  阅读(662)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2020-09-10 EasyUI
点击右上角即可分享
微信分享提示