Mongodb NoSQL:存储层次结构树(表示文件和文件夹)

Mongodb NoSQL:存储层次结构树(表示文件和文件夹),mongodb,tree,graph-databases,database,nosql,Mongodb,Tree,Graph Databases,Database,Nosql,我想在磁盘上存储多个树(我的树表示文件和文件夹的层次结构),每个节点上都有键/值信息 我希望能够比较这些树(交集、并集、差分等),它们将有数百万个节点 哪种解决方案最合适?基于文档的存储(MongoDB…)或图形数据库(Neo4J…?图形数据库自然适合树结构。在Neo4j中,您可以非常简单地表示文件和文件夹,如下所示: (:Folder)-[:CONTAINS]->(:File) (:Folder)-[:CONTAINS]->(:Folder) 如果要比较结构,可以进行两个密码查询

我想在磁盘上存储多个树(我的树表示文件和文件夹的层次结构),每个节点上都有键/值信息

我希望能够比较这些树(交集、并集、差分等),它们将有数百万个节点


哪种解决方案最合适?基于文档的存储(MongoDB…)或图形数据库(Neo4J…?

图形数据库自然适合树结构。在Neo4j中,您可以非常简单地表示文件和文件夹,如下所示:

(:Folder)-[:CONTAINS]->(:File)
(:Folder)-[:CONTAINS]->(:Folder)
如果要比较结构,可以进行两个密码查询

MATCH path=(top_folder:Folder)-[:CONTAINS*1..15]->(leaf)
WHERE
  ID(top_folder) = {specified_id}
  (leaf:File OR leaf:Folder) AND
  NOT(leaf-[:CONTAINS]->())
RETURN path
这将返回目录结构的所有路径,这些路径从指定的文件夹开始,然后可以进行比较

或者,如果您对Java(或与Java集成的某种语言)感到满意,您可以使用内置的Neo4j API构建自己的递归算法来比较结构