`
落叶留步
  • 浏览: 53236 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mongodb树形结构

 
阅读更多

    在mongodb中有多种方式来存储属性结构的数据。

    1 通过子文档关联父文档

{
	"_id": 1,
	"name": "子节点",
	"parents": ["父节点1","父节点2"]
}

    2 通过父节点关联子节点

{
	"_id": 1,
	"name": "父节点",
	"childs": ["子节点1","子节点2"]
}

    3 通过外部collection来做关联

{
	"_id": 1,
	"parent": 2,
	"child": 3
}

     

这三种方式方式都有个问题,当查询子孙节点或者祖先节点的时候,都需要递归查询。在官档中看到另一种方式,就是通过存储祖先的路径,然后用正则来做查询,可以很方便的查询某个节点的子孙节点或者祖先节点,不用递归查询。

    4 通过存储祖先的路径

{
	"_id": 1,
	"name": "子节点",
	"path": "父节点1,父节点2,父节点3,"
}

 假如查询父节点1的子孙节点,查询就可以使用正则查询:

{
	"path": /父节点1,/ 
}

 查祖先节点就更简单了,直接拿出path里面所有的数据,就是祖先节点了。

但是这种结构有一个问题,就是如果只查一层,即查子节点或者父节点就不好弄了,于是就用第3种方式来做这种子父的查询。

    5 通过存储祖先和父节点

{
    "_id": 1,
    "name": "子节点",
    "parents": ["父节点1", "父节点2"],
    "path": "父节点1,父节点2,"
}

 这种方式可以很方便的查找某个节点的所有子节点(通过parents等于这个父节点就行),以及某个节点的所有子孙节点(通过path进行正则匹配)。

 

 

 

 

 

 

分享到:
评论

相关推荐

    mongodb-tree-structure:在MongoDB中实现树结构

    在MongoDB中实现树结构 一种使用一个MongoDB集合实现树结构的方法。 显示模式设计和CRUD概念的一些基本思想。 在示例代码中使用和 。 [警告] 根据我很少的经验,这只是一种实现树结构的方法。 这可能不是您情况下的...

    Storing_TreeView_Structures_WithMongoDB:教育性存储库,展示了使用NoSQL数据库MongoDB存储树结构的方法

    使用MongoDB存储树状结构教育性资料库展示了使用NoSQL数据库MongoDB存储树形结构的方法背景在现实生活中,几乎所有项目都涉及树木结构。 不同种类的分类法,站点结构等都需要对层次关系进行建模。 在本文中,我将在...

    nodejs+express递归实现树形结构demo

    在Node.js环境中,Express框架是构建Web应用的常用选择,尤其在处理动态数据展示时,如构建树形结构。树形结构通常用于表示层级关系,例如文件系统、组织架构或菜单导航。本示例将介绍如何使用Node.js和Express来...

    tp5的nestedsets,方便的对树形结构的数据在关系型数据库中进行管理和操作。.zip

    Nested Sets是一种在关系型数据库中存储树形结构的有效方式,它允许快速的查询、插入和删除节点,特别适合用于菜单、分类系统等场景。 Nested Sets模型的核心思想是为每个节点分配两个整数值,通常称为`lft`(左值...

    使用MongoDB存储类似层次结构的树

    以下将详细介绍在MongoDB中存储类似层次结构的树的三种策略。 ### 1. **嵌套文档(Nested Documents)** 在MongoDB中,可以将整个树结构表示为一个嵌套的文档系列。每个文档包含其子节点作为属性,如下所示: ```...

    mongodb可视化工具

    1. 数据浏览:Robo 3T提供了一个清晰的树形结构,展示MongoDB的集合、数据库和分片信息。用户可以轻松浏览和查看数据文档,支持JSON格式的显示。 2. 查询执行:它提供了强大的查询编辑器,支持MongoDB的查询语法,...

    mongoDB实现BOM表多试图转换

    在数据库中,BOM通常被表示为树形结构,根节点代表最终产品,而叶子节点是最低级别的组件。 MongoDB以其灵活性和高性能在处理复杂数据结构时表现出色,特别适合存储BOM这样的树状数据。其文档型数据模型允许我们在...

    mongodb-compass-1.27.1-win32-x64.zip

    用户可以通过树形视图或表格视图浏览数据,同时支持图表展示复杂的数据关系。 2. **查询构建器**:对于不熟悉MongoDB查询语言(MQL)的用户,查询构建器是一个极其有用的工具。用户可以通过拖拽和填写表单的方式来...

    组织机构树形列表实现-源代码

    10. **数据持久化**:对于树形结构的存储,可以选择关系型数据库(如MySQL、PostgreSQL)的自连接方式,或者使用NoSQL数据库(如MongoDB、Neo4j)的图形数据模型。 以上就是组织机构树形列表实现中涉及的关键技术点...

    job7、mongodb设计

    MongoDB是一种流行的开源文档数据库,属于NoSQL数据库家族,它以JSON-like的文档结构存储数据,具有灵活性和高性能。在本项目中,我们将基于给定的E-R模型图来设计MongoDB的集合,并创建测试记录以验证其功能。 ...

    mac_navicat_mongodb.zip

    3. 数据查看和编辑:用户可以通过表格、树形或JSON格式查看数据,同时支持添加、修改和删除记录,以及执行复杂的查询操作。 4. SQL构建器:即使MongoDB主要使用查询表达式而非SQL,Navicat依然提供了类似的SQL编辑...

    MongoVUE mongodb连接客户端

    2. 数据浏览:提供清晰的树形视图来展示数据库、集合、文档结构,用户可以方便地查看、编辑和删除数据。 3. 文档编辑:MongoVUE支持实时预览和编辑文档内容,支持JSON格式的输入和验证,避免语法错误。 4. 查询...

    mongodb pdf

    - 关于 MongoDB 数据结构中的树形导航机制。 - **知识点**: - 数据组织结构。 - 导航逻辑。 #### 26. **Old Pages** - 包含一些较旧的内容,可能已被新版本文档替换。 - **知识点**: - 存档资料。 - 历史文档...

    常用的三种树形菜单->很实用的

    HTML本身并不支持直接创建树形结构,但可以通过`<ul>`和`<li>`标签模拟树形菜单,通过CSS控制样式,而JavaScript则用于处理交互逻辑,如节点的展开和折叠。例如,jQuery库提供了丰富的DOM操作方法,可以轻松实现这...

    MongoVUE,MongoDB客户端

    2. **数据浏览**:通过MongoVUE,用户可以直接在表格视图或树形视图中查看数据库中的文档。这种可视化方式有助于快速理解数据结构和内容,方便进行数据浏览和分析。 3. **查询编辑器**:MongoVUE内置了强大的查询...

    安卓Android源码——树形主键.zip

    另一种方法是使用NoSQL数据库,如MongoDB,它更易于处理复杂的结构化数据,包括树形结构。 在这个压缩包中,可能包含以下内容: 1. **源码示例**:展示如何在Android应用中创建和操作树形主键的代码。可能包括...

    使用MongoDB存储类似层次结构的树,第2部分

    在“使用MongoDB存储类似层次结构的树,第2部分”这一主题中,我们将深入到三个关键方法,这些方法可以帮助开发者有效地在MongoDB中构建和操作树形结构: 1. **嵌套文档**:MongoDB支持嵌套文档,这意味着每个文档...

    基于JavaScript实现树形下拉框

    平时会经常遇到树形结构的问题,比如显示目录结构等。 大多数情况下后台会返回这样的数据,如下: [ { id: 19, pid: 0, name: 'nodejs' }, { id: 20, pid: 19, name: 'express' }, { id: 21, pid: 19, name: '...

    Test_将数据库数据显示到树形图中

    3. 选择合适的可视化库:为了将数据呈现为树形图,我们需要一个支持树形结构的图形库。在JavaScript中,D3.js是一个强大的可视化库,可以创建复杂的数据图表,包括树形图。在Python中,有matplotlib、networkx和...

    mongodb客户端连接工具

    2. **数据浏览**:用户可以通过树形视图清晰地查看数据库、集合、文档结构,支持分页和搜索,便于数据的浏览和查找。 3. **数据编辑**:可以方便地添加、修改、删除单个或批量文档,支持JSON格式输入,提供拖放操作...

Global site tag (gtag.js) - Google Analytics