树形结构 - MongoDB 如何存储有序树表?
黄舟
黄舟 2017-04-24 09:12:53
0
1
996

需要在MongoDB里存储一个有序的树表

例如

- 1,a
- 
    - 11,b

- 2,c
- 
    - 21,d
    - 22,e
    - 
        - 221,f

    - 23,g

- 3,h

根据MongoDB官方文档
http://docs.mongodb.org/manual/tutorial/model-tree-structures/
里的各种方案,同级的文档是没有顺序的。但是我需要能排序(能体现该文档在本级中的上下位置) 同时需要在同级中移动和插入新数据。

目前我能想到的方案

方案1,将该文档在本级的顺序写到文档内。

问题:

  1. 每修改一个文档位置,就需要批量修改本级所有记录,在mongoDB里这种批量修改成本是否很高?
  2. 如果多个并发修改,是否会造成数据不一致?

方案2,在上级文档中保存一个下级文档排列顺序的数组

问题:

  1. 这个查询要怎么写?
  2. 这种每次查询都要排序的查询是否系统成本很高(占用大量cpu和内存)?
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(1)
迷茫

나무 구조를 모델링하는 방법에는 여러 가지가 있습니다. 어느 것을 사용하셨나요?

순서가 자연순인 경우 경로 필드를 색인화하여 순차적인 결과를 얻을 수 있습니다. 특히 경로를 구체화하는 방법. 예:

으아악

이 방법은 노드 아래의 모든 바이트 포인트를 빠르게 쿼리할 수 있으며 모든 노드를 경로에 따라 정렬할 수 있습니다

번역 중인 중국어 문서 보기: http://docs.mongoing.com/manual-zh/tutorial/model-tree-structures-with-materialized-paths.html

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!