我使用 Neo4j
作为图形数据库,并使用 Java 从中提取路径。
我的路径如下:
[(3)--[KNOWS,5]-->(4)--[KNOWS,6]-->(5)--[KNOWS,9]-->(6)--[KNOWS,10]-->(7)--[KNOWS,12]-->(9)]
我想用它们的属性替换路径中的节点 ID。
前任。对于具有属性 "name=ABC"
的节点 id 3,输出应类似于 "[(ABC)--[KNOWS,5]....]"
如何做到?
最佳答案
我假设我们显示的输出是 Path.toString() 。没有直接的方法来配置不同的输出方式。但是,您可以轻松地迭代路径并创建您自己的路径字符串表示形式:
String myCustomPathToString(Path path) {
StringBuilder sb = new StringBuilder();
Node lastNode = null;
for (PropertyContainer propertyContainer: path) {
if (propertyContainer instanceof Node) {
lastNode = (Node)propertyContainer
Object default = lastNode.getId(); // as fallback
sb.append("(").append(propertyContainer.getProperty("name", default).append(")");
}
if (propertyContainer instanceof Relationship) {
Relationship rel = (Relationship)propertyContainer ;
Object id = rel.getId();
if (rel.getEndNode().equals(lastNode)) sb.append("<");
sb.append("--[").append(rel.getType().name()).append(",").append(id).append("]--");
if (rel.getStartNode().equals(lastNode)) sb.append(">");
}
}
return sb.toString();
}
免责声明:我没有测试上面的代码片段,所以它更像是一个指导方针,而不是一个工作示例。
关于java - 如何将节点 id 替换为其各自的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15522999/