需要在MongoDB里存储一个有序的树表
例如
根据MongoDB官方文档里的各种方案,同级的文档是没有顺序的。但是我需要能排序(能体现该文档在本级中的上下位置) 同时需要在同级中移动和插入新数据。
目前我能想到的方案
方案1,将该文档在本级的顺序写到文档内。
问题:
1.每修改一个文档位置,就需要批量修改本级所有记录,在mongoDB里这种批量修改成本是否很高?
2.如果多个并发修改,是否会造成数据不一致?
方案2,在上级文档中保存一个下级文档排列顺序的数组
问题:
1.这个查询要怎么写?
2.这种每次查询都要排序的查询是否系统成本很高(占用大量cpu和内存)?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
关于树结构,有多种建模方法。
如果你的顺序是自然顺序,那么对路径字段建索引就可以得到顺序结果。特别是采用物化路径的方法。如:
{ path: "1a", ...}
{ path: "1a,b", ...}
{ path: "2c", ...}
{ path: "2c,d", ...}
{ path: "2c,e", ...}
{ path: "2c,e,f", ...}
这种方式可以很快的查询到一个节点下所有字节点,并且所有节点可以按照path排序
参见中文文档: http://docs.mongoing.com/manual-zh/tutorial/model-tree-structures-with-materialized-paths.html#model-tree-structures-with-materialized-paths