Neo4j:将递归查询结果显示为Neo4JTemplate的路径元素

时间:2014-11-26 13:07:48

标签: java json neo4j

我有以下节点结构Employee[e_id, e_name, e_bossid]。 更有甚者,我有一个查询,在SELF关系e_bossid-[REPORTS_TO]->e_id的递归遍历中利用数据库:

// Mark the root (aka `e_bossid IS NULL`)
MATCH (e:Employee) WHERE NOT (e)-[:REPORTS_TO]->()
SET e:Root

// find all paths of arbitrary length from he root
MATCH path = (b:Root)<-[:REPORTS_TO*]-(e:Employee)
RETURN path
limit 1000

现在当我像这样使用Result时:

Result<Map<String, Object>> result = neo4jTemplate.query(query, null);

    List<Map<String, Object>> table = new ArrayList<Map<String, Object>>();
    Map<String, Object> row = null;

    for(Object u : result.to(Object.class)) {

        row = new HashMap<>();
        row.put("neo_eb_id",        u);

        table.add(row);

    }

它实际上只返回路径JSON表示形式的结果

e_id": {

    "path": {
        "length": 1,
        "start": "http://localhost:7474/db/data/node/0",
        "relationships": [
            "http://localhost:7474/db/data/relationship/6"
        ],
        "end": "http://localhost:7474/db/data/node/10",
        "nodes": [
            "http://localhost:7474/db/data/node/0",
            "http://localhost:7474/db/data/node/10"
        ]
    }

},

我需要的是在树结构中获取所有实际节点属性,而不仅仅是路径。 所以这就是我所追求的:

node1
  |- node100 (id,name, bossid)
  |     |- node1000 (id, name, bossid)
  |     |- node2000 (id, name, bossid)
  |           |- node2001 (id, name, bossid)
  |           |- node2002 (id, name, bossid)
...
node2

  |- node1001 (id, name, bossid)

我想要获取节点属性,所以它看起来像这样:

e_id: 1
e_name: Johnson
e_bossid:null
path:{
           e_id:10
           e_name:Marks
           e_bossid:1
           path:{
                e_id:100
                e_name: Doe
                e_bossid: 10
           }

}
e_id: 101
e_name: Jinx
e_bossid:{
            e_id:
}
...

1.对于这个简单的3elem节点结构,最快的Java代码是什么?将此查询的结果作为JSON REST响应以嵌入式节点树结构的形式包含所有节点属性值?

2。是否有更好的或neo4j方式来实现这样的结果?

0 个答案:

没有答案