【问题标题】:How to store tree structure using neo4j and gremlin如何使用 neo4j 和 gremlin 存储树结构
【发布时间】:2011-10-17 11:50:10
【问题描述】:

我想在 Java 中使用 neo4j 本地数据库和 Gremlin 存储以下目录树结构。

(根) / \ 目录 2 目录 3 / \ \ 目录 4 目录 5 目录 6 / 目录7

我已经定义了一个方法 StorePath(String path)。
我想要什么:当我用 path = "Root\Dir2\Dir4\Dir7" 调用 StorePath(path) 时,数据应按如下方式存储

根 / 目录2 / 目录4 / 目录7

其中 Root 和 Dir* 是具有空白边的顶点。 请帮我写java代码。

【问题讨论】:

    标签: graph neo4j graph-databases gremlin


    【解决方案1】:
    private static final RelationshipType SUB_DIR = DynamicRelationshipType.withName("SUB_DIR");
    
    public void storePath(String path) {
        Node dir = graphDb.getReferenceNode();
        for (String name : path.split(File.separator)) {
            dir = obtainSubDir(dir, name);
        }
    }
    
    private Node obtainSubDir(Node dir, String name) {
        Node subDir = getSubDir(dir,name);
        if (subDir!=null) return subDir;
        return createSubDir(dir, name);
    }
    
    private Node getSubDir(Node dir, String name) {
        for (Relationship rel : dir.getRelationships(SUB_DIR, Direction.OUTGOING)) {
            final Node subDir = rel.getEndNode();
            if (subDir.getProperty("name", "").equals(name)) return subDir;
        }
        return null;
    }
    
    private Node createSubDir(Node dir, String name) {
        Node subDir = dir.getGraphDatabase().createNode();
        subDir.setProperty("name", name);
        dir.createRelationshipTo(subDir, SUB_DIR);
        return subDir;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-07-31
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多