我有以下节点结构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方式来实现这样的结果?