2016-08-10 2 views
0

Ich versuche herauszufinden, wie man eine Cypher-Abfrage für Neo4J schreibt. Ich habe eine verknüpfte Liste von Knoten wie folgt aus:Überspringe einen Knoten in einer Variablenlängenbeziehung in der Chiffre

n-[FIRST_NODE]->n-[NEXT_NODE]->n-[NEXT_NODE]->..... 

Die FIRST_NODE Beziehung eine Eigenschaft hat, die besagt, wie tief in der Liste wir Knoten abrufen soll. Ich möchte eine Liste von Knoten abrufen, die möglicherweise einen überspringt, basierend auf einer Eigenschaft in n, und x Menge von Knoten abrufen, wobei x die Tiefe ist, die wir in der Liste durchlaufen sollten. Macht das Sinn?

Ich habe die folgende Abfrage gefunden, aber es funktioniert nicht!

MATCH (x)-[firstIssue:FIRST_NODE]->(y:Type1) 
MATCH (z)-[:NEXT_NODE*1..{firstIssue.Count}]->(a:Type1) 
RETURN x,y,z,a 

Jede Hilfe wäre approved !.

+0

Überprüfen Sie die APOC-Prozeduren Bibliothek Cybersam vorgeschlagen zuerst. Wenn das immer noch nicht für Sie funktioniert, müssen Sie möglicherweise Cypher beenden und stattdessen auf Neo4js Traversal-Framework in Java schauen. – InverseFalcon

Antwort

1

Cypher unterstützt dynamische Grenzen für Pfade mit variabler Länge nicht.

In neo4j 3.x können Sie jedoch die APOC plugin installieren und die apoc.path.expand Prozedur verwenden. Zum Beispiel:

MATCH (x)-[firstIssue:FIRST_NODE]->(y:Type1) 
CALL apoc.path.expand(y, 'NEXT_NODE>', '+Type1', 1, firstIssue.Count) YIELD path 
RETURN x, firstIssue, path; 
+0

Wir werden uns darum kümmern. Vielen Dank –

Verwandte Themen