0

私はNeo4jグラフデータベースに使用しており、Javaを使用してそこからパスを抽出しています。次のようなパスがあります。

[(3)--[KNOWS,5]-->(4)--[KNOWS,6]-->(5)--[KNOWS,9]-->(6)--[KNOWS,10]-->(7)--[KNOWS,12]-->(9)]

パス内のノード ID をそのプロパティに置き換えたい。元。プロパティ を持つノード ID 3 の場合"name=ABC"、出力は"[(ABC)--[KNOWS,5]....]" How it can be done?のようになります。

4

2 に答える 2

2

表示された出力は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();
}

免責事項: 上記のスニペットはテストしていないため、実際の例というよりはガイドラインです。

于 2013-03-20T12:55:55.277 に答える
1

Cypherの場合、extractを使用できます。

  START n=node:index(key="value")
  MATCH path=n-[:KNOWS*..5]-m
  RETURN extract(x in nodes(path) : x.name)

関係を維持したい場合は、次のことができます。

  RETURN extract(x in path : coalesce(x.name?,ID(x)+":"+type(x)))

参照:http ://console.neo4j.org/r/zvmyz

于 2013-03-20T13:11:03.320 に答える